java控制台应用程序将用户批量上载到azure b2c active directory

ni65a41a  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(392)

我正在尝试创建一个java控制台应用程序,将用户从本地sql数据库批量上载到azure b2c active directory。我创建了一个json文件

{
  "users": [
    {
      "displayName": "Amanda Polly",
      "givenName": "Amanda",
      "surname": "Polly",
      "extension_user_type": "user",
      "identities": [
        {
          "signInType": "emailAddress",
          "issuerAssignedId": "amandapolly@gmail.com"
        }
      ],
      "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上创建的用户,我需要帮助来启动这个,我必须使用microsoft graph api,有人可以指导我通过,我阅读了关于tokens和clientid的内容,但无法理解它。

它长时间处于这种状态。反序列化为json

yvt65v4c

yvt65v4c1#

要调用microsoft graph,您的应用程序必须从microsoft identity platform获取访问令牌。访问令牌包含有关您的应用程序的信息以及它对通过microsoft graph提供的资源和API的权限。若要获取访问令牌,您的应用程序必须在microsoft identity platform中注册,并由用户或管理员授权才能访问它所需的microsoft graph资源。
常见的身份验证流有两种:客户端\凭证流和授权\代码流。前者是app only,后者是app+user。
这里我以“客户机凭证流”为例。
首先你需要注册你的应用程序。这里有更详细的步骤。记住添加并同意 User.ReadWrite.All azure广告应用程序中的应用程序权限。

添加权限后,不要忘记单击“grant admin approvement for{your tenant}”(请参见下面的内容)。

必须创建客户机机密(一旦创建了它就记录下来,因为以后不会看到它)。

还要记住记录应用程序id(客户机id)以备以后使用。

现在,您可以将microsoft graph java sdk安装到项目中,并实现如下所示的客户端凭据提供程序:

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

你应该有 clientId 以及 clientSecret 从前面的步骤。 scopes 应该是 "https://graph.microsoft.com/.default" . tenant 应为b2c租户的租户id。 endpoint 是微软的国家云。请看这里的示例。
然后可以使用以下代码创建用户。请参阅此处的参考资料。

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 = "jsmith@yahoo.com";
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,然后创建具有扩展属性的用户。看看我的另一个逻辑答案(只需在“then create a claimsmappingpolicy:”之前查看内容

相关问题