Azure AD B2C在自定义策略中将声明添加到id_token

时间:2017-10-06 13:30:40

标签: azure-ad-b2c

我已根据社交和本地帐户的Active Directory B2C custom policy starter pack示例为社交帐户和本地帐户创建了自定义政策。我已经启用了与Microsoft和Google的登录,并测试了两者都有效,我还启用了使用本地帐户登录。

当我log in with google时,我收到以下声明

  

EXP,NBF,VER,ISS,子,AUD,ACR,随机数,IAT,auth_time,电子邮件,GIVEN_NAME,FAMILY_NAME,姓名,IDP,at_hash

当我登录custom Azure AD tenant时,这组声明中缺少“电子邮件”,但电子邮件列在“名称”声明中

  

exp,nbf,ver,iss,sub,aud,acr,nonce,iat,auth_time,given_name,family_name,name,idp,at_hash

当我以本地帐户登录时,这组索赔缺少“电子邮件”,并且没有任何字段中列出的电子邮件。

  

exp,nbf,ver,iss,sub,aud,acr,nonce,iat,auth_time,given_name,family_name,name,at_hash

最后,当我查看B2C管理员中的用户列表时,这些都是不同的用户条目...即使电子邮件地址相同。所以我有2个问题,

  1. 如何在id_token
  2. 中获得一致的声明集
  3. 如何在注册时将所有这些帐户链接在一起(相同的UPN)
  4. 我相信这些可能是相关的,这就是我一起问他们的原因。 您可能希望查看这些策略,但我向您保证它们与初学者包中的策略完全相同,我所做的就是更改租户名称并在信任框架扩展文件中添加google和azure。

1 个答案:

答案 0 :(得分:2)

对于Azure AD电子邮件声明,请将以下<OutputClaim />添加到Azure AD OpenID Connect技术配置文件中:

<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="unique_name" />

对于本地帐户电子邮件声明,请将以下<OutputClaim />添加到AAD-UserReadUsingObjectId技术资料中:

<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />