发送对用户隐藏的 Azure AD B2C 声明

spo*_*ahn 4 azure-ad-b2c

我按照WingTig Games 演示代码通过 JWT 向 B2C 发送声明。如何向用户隐藏我的自我注册声明(LocalAccountSignUpWithLogonNameWithIDs 如下所示)?TechnicalProfile


我尝试UserInputTypeClaimType定义中删除该节点,但随后在用户旅程播放器中出现以下错误:

在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_signup_signin_extensions”中 ID 为“LocalAccountSignUpWithLogonNameWithIDs”的技术配置文件中指定的输出声明类型“extension_my_claim”未指定 UserInputType 或 DefaultValue,也不会从 ValidationTechnicalProfile 中检索。

InputClaims因此,然后我从其中删除了我的声明,OutputClaimsTechnicalProfile删除了错误,但当时的值并未保留。


<TechnicalProfile Id="LocalAccountSignUpWithLogonNameWithIDs">
    <DisplayName>User ID signup with associate and org id</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>
    <CryptographicKeys>
        <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
    </CryptographicKeys>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" />
        <InputClaim ClaimTypeReferenceId="extension_my_claim" /> 
    </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" Required="true" />
        <OutputClaim ClaimTypeReferenceId="extension_my_claim" Required="true"/>
        <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
        <OutputClaim ClaimTypeReferenceId="newUser" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
        <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    </OutputClaims>
    <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonName" />
    </ValidationTechnicalProfiles>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
Run Code Online (Sandbox Code Playgroud)

Ome*_*bal 5

如果您想将声明保留在目录中而不向用户显示,最好的选择是:

  1. 将其添加InputClaimLocalAccountSignUpWithLogonNameWithIDs技术简介中
  2. 将其添加为技术配置文件PersistedClaim中的a AAD-UserWriteUsingLogonName,这会将其写入目录

您所做的就是一路发送声明以获得持久性,但声明您不希望OutputClaim来自SelfAssertedAttributeProvider.

当您将声明添加为 时OutputClaim,您就声明SelfAssertedAttributeProvider需要有一种方法来获取该值。截至今天,它可以通过以下三种可能的方式之一获取:

  1. 由用户提供(定义UserInputType中需要ClaimType
  2. 检索自ValidationTechnicalProfile
  3. 作为保单中DefaultValue的一项提供OutputClaim

您收到的错误可能是因为技术配置文件无法SelfAssertedAttributeProvider获取此声明的值。