Aplikasi Konsol Java untuk mengunggah pengguna secara massal ke direktori aktif Azure B2C

Aug 21 2020

Saya mencoba membuat Aplikasi Konsol Java untuk mengunggah pengguna secara massal dari database SQL lokal ke direktori aktif Azure b2c. Saya memiliki file JSON yang saya buat

{
  "users": [
    {
      "displayName": "Amanda Polly",
      "givenName": "Amanda",
      "surname": "Polly",
      "extension_user_type": "user",
      "identities": [
        {
          "signInType": "emailAddress",
          "issuerAssignedId": "[email protected]"
        }
      ],
      "extension_timezone": "PST",
      "extension_locale": "en-US",
      "extension_tenant": "EG1234"
    },
    {
      "displayName": "Lowa Doe",
      "givenName": "Lowa",
      "surname": "Doe",
      "extension_user_type": "user",
      "identities": [
        {
          "signInType": "userName",
          "issuerAssignedId": "lowadow123"
        }
      ],
      "extension_timezone": "PST",
      "extension_locale": "en-US",
      "extension_tenant": "EG1234"
    }
   ]
}

Ini adalah pengguna yang ingin saya buat di B2C, saya butuh bantuan untuk memulai ini, saya harus menggunakan microsoft graph API, siapa pun dapat membimbing saya, saya membaca tentang token dan clientID tetapi tidak dapat memahaminya.

Itu terjebak dalam keadaan ini untuk waktu yang lama. deserializing ke JSON

Jawaban

1 AllenWu Aug 21 2020 at 06:29

Untuk memanggil Microsoft Graph, aplikasi Anda harus memperoleh token akses dari platform identitas Microsoft. Token akses berisi informasi tentang aplikasi Anda dan izin yang dimilikinya untuk sumber daya dan API yang tersedia melalui Microsoft Graph. Untuk mendapatkan token akses, aplikasi Anda harus terdaftar dengan platform identitas Microsoft dan diotorisasi oleh pengguna atau administrator untuk akses ke sumber daya Microsoft Graph yang dibutuhkannya.

Ada dua jenis aliran autentikasi yang umum: aliran client_credentials dan aliran authorization_code . Yang pertama hanya untuk aplikasi, dan yang terakhir adalah aplikasi + pengguna.

Di sini saya mengambil "aliran client_credentials" sebagai contoh.

Pertama, Anda perlu Daftarkan aplikasi Anda . Langkah lebih rinci di sini . Ingatlah untuk menambahkan dan memberikan persetujuan untuk User.ReadWrite.Allizin aplikasi di aplikasi Azure AD Anda.

Setelah Anda menambahkan izin, jangan lupa untuk mengklik " Berikan izin admin untuk {penyewa Anda} " (lihat di bawah).

Buat rahasia klien diperlukan. (rekam setelah dibuat karena Anda tidak akan melihatnya nanti).

Ingat juga untuk mencatat id aplikasi (id klien) untuk penggunaan yang terlambat.

Sekarang Anda dapat Menginstal Microsoft Graph Java SDK ke proyek Anda dan menerapkan penyedia kredensial Klien seperti ini:

ClientCredentialProvider authProvider = new ClientCredentialProvider(
                                                    clientId,
                                                    scopes,
                                                    clientSecret,
                                                    tenant,
                                                    endpoint);

Anda harus memiliki clientIddan clientSecretdari langkah sebelumnya. scopesseharusnya "https://graph.microsoft.com/.default". tenantharus menjadi id penyewa dari penyewa B2C Anda. endpointadalah NATIONAL_CLOUD dari Microsoft. Lihat contoh di sini .

Kemudian Anda dapat menggunakan kode berikut untuk membuat pengguna. Lihat referensi di sini.

IGraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();

User user = new User();
user.displayName = "John Smith";
LinkedList<ObjectIdentity> identitiesList = new LinkedList<ObjectIdentity>();
ObjectIdentity identities = new ObjectIdentity();
identities.signInType = "userName";
identities.issuer = "contoso.onmicrosoft.com";
identities.issuerAssignedId = "johnsmith";
identitiesList.add(identities);
ObjectIdentity identities1 = new ObjectIdentity();
identities1.signInType = "emailAddress";
identities1.issuer = "contoso.onmicrosoft.com";
identities1.issuerAssignedId = "[email protected]";
identitiesList.add(identities1);
ObjectIdentity identities2 = new ObjectIdentity();
identities2.signInType = "federated";
identities2.issuer = "facebook.com";
identities2.issuerAssignedId = "5eecb0cd";
identitiesList.add(identities2);
user.identities = identitiesList;
PasswordProfile passwordProfile = new PasswordProfile();
passwordProfile.password = "password-value";
passwordProfile.forceChangePasswordNextSignIn = false;
user.passwordProfile = passwordProfile;
user.passwordPolicies = "DisablePasswordExpiration";

graphClient.users()
    .buildRequest()
    .post(user);

Ubah kode berdasarkan kebutuhan Anda.

Selain itu, jika Anda ingin menambahkan atribut ekstensi, Anda perlu merujuk ke Create extensionProperty . Anda harus membuat extensionProperty terlebih dahulu dan kemudian membuat pengguna dengan atribut ekstensi. Lihat jawaban saya yang lain untuk logika. (hanya perlu melihat konten sebelum "Lalu buat claimMappingPolicy:" )