Консольное приложение Java для массовой загрузки пользователя в активный каталог Azure B2C
Я пытаюсь создать консольное приложение Java для массовой загрузки пользователей из локальной базы данных SQL в активный каталог Azure b2c. У меня есть файл JSON, который я создал
{
"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"
}
]
}
Это пользователи, которых я хочу создать в B2C, мне нужна помощь в запуске, мне нужно использовать API-интерфейс Microsoft Graph, может ли кто-нибудь помочь мне, я читал о токенах и clientID, но не смог этого понять.

В этом состоянии он застрял надолго. десериализация в JSON
Ответы
Чтобы вызвать Microsoft Graph, ваше приложение должно получить токен доступа от платформы идентификации Microsoft. Маркер доступа содержит информацию о вашем приложении и разрешениях, которые оно имеет для ресурсов и API-интерфейсов, доступных через Microsoft Graph. Чтобы получить токен доступа, ваше приложение должно быть зарегистрировано на платформе Microsoft Identity и авторизовано пользователем или администратором для доступа к необходимым ему ресурсам Microsoft Graph.
Есть два вида общего потока идентификации: client_credentials поток и поток authorization_code . Первый предназначен только для приложения, а второй - для приложения + пользователя.
В качестве примера я беру «поток client_credentials».
Во-первых, вам необходимо зарегистрировать свое приложение . Более подробные шаги здесь . Не забудьте добавить и предоставить согласие на User.ReadWrite.Allразрешение приложения в своем приложении Azure AD.

После добавления разрешения не забудьте нажать « Предоставить согласие администратора для {вашего клиента} » (см. Ниже).

Необходимо создать секрет клиента. (запишите его, когда он будет создан, потому что вы его не увидите позже).

Также не забудьте записать идентификатор приложения (идентификатор клиента) на случай позднего использования.

Теперь вы можете установить Microsoft Graph Java SDK в свой проект и реализовать поставщика учетных данных клиента следующим образом:
ClientCredentialProvider authProvider = new ClientCredentialProvider(
clientId,
scopes,
clientSecret,
tenant,
endpoint);
У вас должно быть clientId
и clientSecret
из предыдущих шагов. scopes
должно быть "https://graph.microsoft.com/.default"
. tenant
должен быть идентификатором вашего арендатора B2C. endpoint
является НАЦИОНАЛЬНЫМ ОБЛАКОМ Microsoft. См. Образец здесь .
Затем вы можете использовать следующий код для создания пользователя. См. Ссылку здесь.
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);
Измените код в соответствии со своими потребностями.
Кроме того, если вы хотите добавить атрибуты расширения, вам нужно обратиться к Create extensionProperty . Вы должны сначала создать extensionProperty, а затем создать пользователей с атрибутами расширения. См. Мой другой ответ для логики. (просто нужно изучить содержимое перед тем, как «Затем создать ClaimsMappingPolicy:» )