0

我们允许外部 Azure AD 用户通过自定义策略注册和登录我们的应用程序。这会在我们的 azure ad org 中创建一个 shell 用户,我们在用户个人资料下使用用户的电子邮件地址,而不是来自外部 AD 的用户 UPN。如果用户的电子邮件地址与他们的 UPN 不同,我们 adb2c 组织中的 shell 用户将使用电子邮件地址作为 UPN。我们定制了自定义策略以返回来自外部 AD 的用户属性以及来自 adb2c 中的 shell 用户的用户属性。我们的应用程序将检测名称或电子邮件地址是否发生变化,并将通过 Microsoft Graph 更新 adb2c shell 用户。

当用户的电子邮件地址发生变化时,我想更新我们 adb2c org 中的 shell 用户。由于电子邮件地址用作 UPN,我如何通过 Graph API 在我们的 adb2c shell 用户中更新我的联合用户 userPrincipalName?

var identities = graphUser.Identities.Select(o => new ObjectIdentity
                {
                    SignInType = o.SignInType,
                    Issuer = o.Issuer,
                    IssuerAssignedId = o.IssuerAssignedId,
                    ODataType = o.ODataType,
                    AdditionalData = o.AdditionalData
                }).ToList();

                var federatedIdentity = identities.FirstOrDefault(i => i.SignInType == "federated");

这两个都不起作用:

federatedIdentity.IssuerAssignedId = "mynameuser@federatedAAD.org";

或者

 var updatedUser = new User
                {
                    //other user attributes here
                    UserPrincipalName = "mynameuser@federatedAAD.org";
                };

await _graphServiceClient.Users[idpId]
                    .Request()
                    .UpdateAsync(updatedUser);

提前致谢!

4

1 回答 1

1

• 您可以使用以下命令通过 HTTP 响应接口使用 Microsoft 图形 API 更新 Azure AD B2C 中的外部用户身份或外壳用户身份:-

 ‘ PATCH https://graph.microsoft.com/v1.0/users/{object id}

    {"userPrincipalName":"jdoe@abc.com"} ‘

输入已创建的 Azure AD B2C shell 用户或登录到 Azure AD B2C 的联合用户的用户主体名称,而不是“jdoe@abc.com”。由于在用户第一次登录以使用创建的应用程序时已经创建了用户身份,因此只需更新现有的用户主体名称即可,这可以通过上述命令完成。

• 此外,Microsoft Graph 似乎不允许在为 Azure B2C 创建用户时设置 userPrincipalName。它将生成 userPrincipalName 为 {object id}@abc.com。然后您可以更新 userPrincipalName。因此,您创建或更新 shell 用户的 UPN 的第二个命令脚本不起作用。以及确保将联合域添加为 Azure AD B2C 中的已验证域,以使上述命令和选项成功。

请参阅以下链接以获取更多信息:-

使用 Graph 在 Azure B2C 中预创建联合用户

https://docs.microsoft.com/en-us/graph/api/user-update?view=graph-rest-1.0&tabs=http

于 2021-10-20T11:42:43.960 回答