AAD B2C 自定义策略示例不返回基于用户名登录的电子邮件声明

问题描述 投票:0回答:1

我已按照部署 AAD B2C 自定义策略的说明在我的 B2C 目录中部署自定义策略。

我已成功部署基于用户名的旅程快速部署示例。

运行

B2C_1A_DEMO_SUSI_USERNAME
的端点时。

  • 注册返回
    email
    声明。
  • 登录不会返回
    email
    声明。

对于返回

email
声明的登录流程, 我是否可以修改
SelfAsserted-LocalAccountSignin-Username
自定义策略的 ID
B2C_1A_DEMO_TRUSTFRAMEWORKEXTENSIONS_USERNAME
的技术配置文件?如果是这样,我到底应该添加什么?如果不是,我还应该看什么?

技术简介

SelfAsserted-LocalAccountSignin-Username
:

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Username">
    <DisplayName>Local Account Signin</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
        <Item Key="SignUpTarget">SignUpWithLogonUsernameExchange</Item>
        <Item Key="setting.operatingMode">Username</Item>
        <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
    </Metadata>
    <IncludeInSso>false</IncludeInSso>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" />
    </InputClaims>
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
        <OutputClaim ClaimTypeReferenceId="password" Required="true" />
        <OutputClaim ClaimTypeReferenceId="objectId" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    </OutputClaims>
    <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
    </ValidationTechnicalProfiles>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

为了进行比较,这是返回

LocalAccountSignUpWithLogonName
声明的
email
技术简介:

<TechnicalProfile Id="LocalAccountSignUpWithLogonName">
    <DisplayName>User ID signup</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
        <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
        <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
        <Item Key="LocalAccountType">Username</Item>
        <Item Key="LocalAccountProfile">true</Item>
        <Item Key="language.button_continue">Create</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" />
    </InputClaims>
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectId" Required="true" />
        <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
        <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
        <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
        <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
        <OutputClaim ClaimTypeReferenceId="newUser" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
        <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
        <OutputClaim ClaimTypeReferenceId="givenName" Required="true" />
        <OutputClaim ClaimTypeReferenceId="surname" Required="true" />
    </OutputClaims>
    <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonName" />
    </ValidationTechnicalProfiles>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

我尝试使用以下代码行添加

email
作为输出声明,

<OutputClaim ClaimTypeReferenceId="email" />

但这会导致异常错误,我还没有启用洞察来跟踪它。

azure azure-ad-b2c
1个回答
0
投票

根据样本:

“注册时,系统会要求用户验证电子邮件地址。该电子邮件地址将通过写入受保护的属性:strongAuthenticationEmailAddress 与用户帐户关联”。

因此您需要在“SelfAsserted-LocalAccountSignin-Username”和RP中输出“strongAuthenticationEmailAddress”。

如果你想在RP中输出“email”:

<OutputClaim ClaimTypeReferenceId="strongAuthenticationEmailAddress"" PartnerClaimType="email" Required="true" />

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.