我们允许外部 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);
提前致谢!