id 和 access token 的不同声明

Different claims for id and access token

我知道如何配置自定义声明https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-tokens?pivots=b2c-custom-policy

问题是访问令牌和 ID 令牌中包含相同的声明。

我想在 id 令牌中包含“displayName”声明,但不在访问令牌中,但我看不到区分两者的方法

• 您只能在隐式流中编辑 ID 令牌和访问令牌中的声明,而对于使用 PKCE 的授权代码流则不可能,因为使用 PKCE 的授权代码流中的令牌是在客户端上设置的由于它们需要首先被冲洗掉。此外,您可以在 B2C 中注册的应用程序的自定义策略中配置要在 ID 令牌和访问令牌中发布的依赖方声明。

• 此外,在自定义策略的技术配置文件的输入声明和输出声明部分中配置的依赖方声明形成依赖方定义,该定义分别确定 ID 令牌和访问令牌。并且两个令牌 return 具有相同的声明集。您可以在隐式流的 RP 部分的 JWT 令牌中配置要发出的声明,如下所示:-

   ‘ <RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
   <DisplayName>PolicyProfile</DisplayName>
   <Protocol Name="OpenIdConnect" />
   <OutputClaims>
     <OutputClaim ClaimTypeReferenceId="displayName" />
  <OutputClaim ClaimTypeReferenceId="givenName" />
  <OutputClaim ClaimTypeReferenceId="surname" />
  <OutputClaim ClaimTypeReferenceId="email" />
  <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
  <OutputClaim ClaimTypeReferenceId="identityProvider" />
   </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
   </TechnicalProfile>
   </RelyingParty>

 {
    ...
    "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
     ...
   } ‘

因此,通过您为每个 ID 定义的令牌技术配置文件和隐式流中的访问令牌,可以相应地传递和使用声明。

请找到以下链接以获取更多信息:-

https://docs.microsoft.com/en-us/azure/active-directory-b2c/session-behavior?pivots=b2c-custom-policy#configure-your-custom-policy

目前无法在访问令牌和 ID 令牌中设置不同的声明。