Aplicación de consola Java para cargar usuarios de forma masiva al directorio activo de Azure B2C

Aug 21 2020

Estoy intentando crear una aplicación de consola Java para cargar usuarios de forma masiva desde la base de datos SQL local al directorio activo de Azure b2c. Tengo un archivo JSON que creé

{
  "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"
    }
   ]
}

Estos son los usuarios que quiero crear en B2C, necesito ayuda para comenzar esto, tengo que usar la API de microsoft graph, ¿alguien puede guiarme? Leí sobre tokens y clientID pero no pude entenderlo.

Está atrapado en este estado durante mucho tiempo. deserialización a JSON

Respuestas

1 AllenWu Aug 21 2020 at 06:29

Para llamar a Microsoft Graph, su aplicación debe adquirir un token de acceso de la plataforma de identidad de Microsoft. El token de acceso contiene información sobre su aplicación y los permisos que tiene para los recursos y las API disponibles a través de Microsoft Graph. Para obtener un token de acceso, su aplicación debe estar registrada en la plataforma de identidad de Microsoft y estar autorizada por un usuario o un administrador para acceder a los recursos de Microsoft Graph que necesita.

Hay dos tipos de flujo de autenticación común: flujo de client_credentials y flujo de código de autorización . El primero es solo de aplicación y el segundo es aplicación + usuario.

Aquí tomo "client_credentials flow" como ejemplo.

En primer lugar, debe registrar su aplicación . Pasos más detallados aquí . Recuerde agregar y otorgar el consentimiento para el User.ReadWrite.Allpermiso de la aplicación en su aplicación de Azure AD.

Después de agregar el permiso, no olvide hacer clic en " Otorgar consentimiento de administrador para {su inquilino} " (ver más abajo).

Es necesario crear un secreto de cliente. (grábelo una vez creado porque no lo verá más tarde).

También recuerde registrar la identificación de la aplicación (identificación del cliente) para un uso tardío.

Ahora puede instalar Microsoft Graph Java SDK en su proyecto e implementar el proveedor de credenciales de cliente de esta manera:

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

Debería tener clientIdy clientSecretde los pasos anteriores. scopesdebería ser "https://graph.microsoft.com/.default". tenantdebe ser la identificación de inquilino de su inquilino B2C. endpointes NATIONAL_CLOUD de Microsoft. Vea la muestra aquí .

Entonces podría usar el siguiente código para crear user. Consulte la referencia aquí.

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);

Modifique el código según sus necesidades.

Además, si desea agregar atributos de extensión, debe consultar Crear propiedad de extensión . Primero debe crear extensionProperty y luego crear los usuarios con atributos de extensión. Vea mi otra respuesta para la lógica. (solo hay que mirar el contenido antes de "Luego crear una política de asignación de reclamos:" )