Applicazione console Java per caricare in blocco l'utente in Active Directory di Azure B2C
Sto cercando di creare un'applicazione console Java per caricare in blocco gli utenti dal database SQL locale alla directory attiva di Azure b2c. Ho un file JSON che ho creato
{
"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"
}
]
}
Questi sono gli utenti che voglio creare su B2C, ho bisogno di aiuto per iniziare, devo usare l'API di microsoft graph, qualcuno può guidarmi, ho letto di token e clientID ma non sono riuscito a capirlo.

È bloccato in questo stato per molto tempo. deserializzazione in JSON
Risposte
Per chiamare Microsoft Graph, l'app deve acquisire un token di accesso dalla piattaforma di identità Microsoft. Il token di accesso contiene informazioni sulla tua app e le autorizzazioni di cui dispone per le risorse e le API disponibili tramite Microsoft Graph. Per ottenere un token di accesso, l'app deve essere registrata con la piattaforma di identità Microsoft ed essere autorizzata da un utente o da un amministratore per l'accesso alle risorse Microsoft Graph di cui ha bisogno.
Esistono due tipi di flusso di autorizzazione comune: flusso client_credentials e flusso codice_autorizzazione . Il primo è solo app e il secondo è app + utente.
Qui prendo "client_credentials flow" come esempio.
Per prima cosa devi registrare la tua app . Passaggi più dettagliati qui . Ricorda di aggiungere e concedere il consenso all'autorizzazione User.ReadWrite.Alldell'applicazione nella tua app Azure AD.

Dopo aver aggiunto l'autorizzazione, non dimenticare di fare clic su " Concedi il consenso dell'amministratore per {il tuo tenant} " (vedi sotto).

È necessario creare un segreto client. (registralo una volta creato perché non lo vedrai più tardi).

Ricordarsi inoltre di registrare l'ID dell'applicazione (ID client) per un utilizzo tardivo.

Ora puoi installare Microsoft Graph Java SDK nel tuo progetto e implementare il provider di credenziali client in questo modo:
ClientCredentialProvider authProvider = new ClientCredentialProvider(
clientId,
scopes,
clientSecret,
tenant,
endpoint);
Dovresti avere clientId
e clientSecret
dai passaggi precedenti. scopes
dovrebbe essere "https://graph.microsoft.com/.default"
. tenant
dovrebbe essere l'ID tenant del tuo tenant B2C. endpoint
è il NATIONAL_CLOUD di Microsoft. Guarda l'esempio qui .
Quindi potresti usare il seguente codice per creare user. Vedi riferimento qui.
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);
Modifica il codice in base alle tue esigenze.
Inoltre, se vuoi aggiungere attributi di estensione, devi fare riferimento a Crea extensionProperty . È necessario creare prima extensionProperty e quindi creare gli utenti con attributi di estensione. Vedi la mia altra risposta per la logica. (è sufficiente esaminare il contenuto prima di "Quindi creare una policyMappingPolicy:" )