Azure B2C SAML自定义策略声明电子邮件

时间:2018-08-06 22:52:16

标签: azure-ad-b2c

我已通过SAML成功将Azure B2C设置为IDP,并且正确获取了namedName,objectId,姓,userPrincipalName的断言。

当用户使用电子邮件地址jdoe@company.com进行注册时,会在B2C中以guid@b2ctenant.onmicrosoft.com格式自动生成一个upn。

我想在SAML断言中获取实际的登录电子邮件地址,在本例中为jdoe@company.com。

我尝试了以下所有选项,但SAML断言没有电子邮件地址。

const photos = [
  { src: thumbsup, width: 4, height: 3 },
  { src: 'https://source.unsplash.com/Dm-qxdynoEc/800x799', width: 1, height: 1 },
  { src: 'https://source.unsplash.com/qDkso9nvCg0/600x799', width: 3, height: 4 }
];

在Chris Padgett的回复之后更改。但仍然没有电子邮件。

{
  src: {
    thumbsup: "/..../....png"
  }, 
  width: 4, 
  height: 3 
}

1 个答案:

答案 0 :(得分:0)

1)确保使用 SAML2 协议的声明类型声明电子邮件声明:

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
    <Protocol Name="OAuth2" PartnerClaimType="email" />
    <Protocol Name="OpenIdConnect" PartnerClaimType="email" />
    <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email" />
  </DefaultPartnerClaimTypes>
  ...
</ClaimType>

2)确保 AAD-UserReadUsingObjectId 技术资料将电子邮件声明读为输出声明:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  ...
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  </OutputClaims>
  ...
</TechnicalProfile>