如何使用HRD自定义策略持久保存电子邮件、名字和姓氏



我在https://github.com/azure-ad-b2c/samples/blob/master/policies/home-realm-discovery-modern/policy/SignIn_smart_HRD.xml在测试目录中运行,我们公司的AD联合为IdP。当我尝试使用我的AD电子邮件地址登录到一个应用程序,而我的帐户不在B2C目录中时,它会在OrchestrationStep 8中使用UserWriteUsingAlternativeSecurityId创建它。但是,新用户帐户只有一个显示名称;没有fname,没有lname,最糟糕的是,没有电子邮件。如何确保这些元素在该步骤中得到持久化?我不知道如何";抓持;他们中的一个。

理想情况下,我希望联合身份自动链接到具有相同电子邮件地址的现有本地帐户,而无需用户进行本地登录。我看到的关于帐户链接的所有示例都涉及用户首先使用本地密码帐户登录,或者预先填充用户的OID。我只有新用户的电子邮件地址。

-GBS

您可以通过将这些声明映射为身份提供者技术配置文件中的输出声明来"抓住"这些声明。

默认情况下,以下声明将基于此持久化:

<PersistedClaims>
<!-- Required claims -->
<PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
<PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
<PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
<PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
<!-- Optional claims -->
<PersistedClaim ClaimTypeReferenceId="otherMails" />
<PersistedClaim ClaimTypeReferenceId="givenName" />
<PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>

因此,在您的身份提供商技术档案中,您需要将索赔映射到上述索赔名称中,例如:

<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
<OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />

在这里,Idp令牌中的family_name被映射到索赔名称、姓氏中。稍后将其持久化到WriteUsingAlternativeSecurityId技术配置文件中。

您可以将IdP电子邮件声明映射到mailNickName中。或者添加到扩展属性中,并将其作为持久化声明添加。

如果您想要自动帐户链接:https://github.com/azure-ad-b2c/samples/blob/master/policies/auto-account-linking

为了防止在账户链接执行时要求用户证明他们拥有该账户,请删除HandleLinkLocalToSocial子旅程中的步骤1-7(包括步骤1-7(。

最新更新