只有“email”字段可以通过“id_token_hint”传递到 B2C 自定义策略

Ale*_*lex 4 azure-ad-b2c identity-experience-framework

我按照这篇文章将电子邮件displayName作为id_token_hint传递给我的自定义策略。以下是我用来提取数据的技术简介:

      <TechnicalProfiles>
        <TechnicalProfile Id="IdTokenHint_ExtractClaims">
          <DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
          <Protocol Name="None" />
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ClientAssertionSigningKey" />
          </CryptographicKeys>  
          <OutputClaims>
            <!--Sample: Read the email cliam from the id_token_hint-->
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="newUserEmail"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="displayName"/>
          </OutputClaims>
        </TechnicalProfile>
Run Code Online (Sandbox Code Playgroud)

问题是,我只能提取电子邮件值。未提取 displayName 声明类型我检查了jwt.ms中的id_token_hint值,其中存在电子邮件和 displayName 的值。我该如何解决这个问题?

Chr*_*ett 6

您还必须添加传入声明作为RelyingParty技术配置文件的输入声明。

例子

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <!-- The following claims are read from the ID token -->
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="newUserEmail" />
      <InputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="displayName" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
      ...
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>
Run Code Online (Sandbox Code Playgroud)