Return 封关于自定义政策的电子邮件

Return emails on custom policies

我正在使用自定义策略,我看到内置策略中存在但自定义策略中不存在的字段 "emails"。相反,有一个名为 otherMails 的声明。

我正在使用入门包中的自定义策略。但是我不知道我应该改变哪个TechnicalProfiles。我尝试了一些方法,但没有用。

提前致谢!

编写本地帐户时:您必须使用 "CreateOtherMailsFromEmail" 声明转换从 "email" 声明创建 "otherMails" 声明,然后将 "otherMails" 声明保留在"AAD-UserWriteUsingLogonEmail" 技术简介:

<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
  ...
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    ...
  </InputClaims>
  <PersistedClaims>
    ...
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
  </PersistedClaims>
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  ...
</TechnicalProfile>

然后,您必须将 "otherMails" 声明从调用以注册本地帐户的 "LocalAccountSignUpWithLogonEmail" 技术配置文件中传递出去:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
    ...
    <OutputClaims>
        ...
        <OutputClaim ClaimTypeReferenceId="otherMails" />
    </OutputClaims>
</TechnicalProfile>

编写社交帐户时:"otherMails" 声明已根据 "email" 声明创建,然后保存在 "AAD-UserWriteUsingAlternativeSecurityId" 技术配置文件中。

然后,您必须从 "SelfAsserted-Social" 技术配置文件中传递 "otherMails" 声明,该声明用于注册社交帐户:

<TechnicalProfile Id="SelfAsserted-Social">
    ...
    <OutputClaims>
        ...
        <OutputClaim ClaimTypeReferenceId="otherMails" />
    </OutputClaims>
</TechnicalProfile>

阅读本地或社交帐户时:"otherMails" 声明已在 "AAD-UserReadUsingObjectId"、"AAD-UserReadUsingEmailAddress" 和 "AAD-UserReadUsingAlternativeSecurityId" 技术资料中阅读。

然后您必须将 "otherMails" 声明从调用以恢复本地密码的 "LocalAccountDiscoveryUsingEmailAddress" 技术配置文件中传递出去:

<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
    ...
    <OutputClaims>
        ...
        <OutputClaim ClaimTypeReferenceId="otherMails" />
    </OutputClaims>
</TechnicalProfile>

要从 sign-up/sign-in 和密码重置策略中以 "emails" 的形式发布 "otherMail" 声明:您必须将 "otherMails" 的声明添加为 <OutputClaim />信赖方政策:

<RelyingParty>
    ...
    <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
            ...
            <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
        </OutputClaims>
    </TechnicalProfile>
</RelyingParty>

对于 Chris Padgett 的回答,您可以在声明中添加其他电子邮件(备用电子邮件)。

如果您只想将 SignIn 名称中的电子邮件声明添加到令牌中,您只需执行以下步骤:

  1. 打开您的 SignUporSignIn.xml 文件

  2. <OutputClaim ClaimTypeReferenceId="email" />替换为<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />

  3. 保存此 SignUporSignIn.xml 文件并将其上传到 Azure AD B2C 以覆盖策略。

  4. 运行 SignUporSignIn 策略来测试它。 这是我的测试结果,您可以在令牌中看到电子邮件声明: