1

我使用内置的 SignUpOrSignIn 策略已经有一段时间了,但我现在正在转向自定义策略。

当我设置内置策略时,我能够从内置应用程序声明(如displayNamejobTitle)列表中进行选择,并选择在用户登录时我希望在令牌中返回哪些声明。

现在我正在设置我想做同样事情的自定义策略,但我无法让它工作。

到目前为止,TrustFrameworkBase我已经添加了ClaimType一个jobTitle

<ClaimType Id="jobTitle">
    <DisplayName>Job Title</DisplayName>
    <DataType>string</DataType>
    <UserHelpText>Job title.</UserHelpText>
</ClaimType>

OutputClaimTechnicalProfilewith ID中添加了以下内容login-NonInteractive

<OutputClaim ClaimTypeReferenceId="jobTitle" PartnerClaimType="jobTitle" />

OutputClaimTechnicalProfilewith ID中添加了以下内容SelfAsserted-LocalAccountSignin-Email

<OutputClaim ClaimTypeReferenceId="jobTitle" />

但是该jobTitle声明并没有与令牌中的其他声明一起出现。我也做过同样的事情,given_name而且确实有效。如果我将第一个更改OutputClaim为:

<OutputClaim ClaimTypeReferenceId="jobTitle" PartnerClaimType="given_name" />

那么jobTitle索赔确实通过了,但具有given_name索赔的价值。这意味着我只是用错了PartnerClaimType,但似乎在任何地方都没有它们的列表。

当用户使用本地 B2C 帐户登录时,如何获取内置职位属性作为令牌中的声明返回?

4

1 回答 1

2

如果您只想阅读用户的jobTitle声明(或其他声明),然后在令牌中发布它(或它们),那么您必须:

1) 声明jobTitle声明:

<ClaimType Id="jobTitle">
  <DisplayName>Job Title</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
    <Protocol Name="OAuth2" PartnerClaimType="job_title" />
    <Protocol Name="OpenIdConnect" PartnerClaimType="job_title" />
  </DefaultPartnerClaimTypes>
</ClaimType>

2) 将jobTitle声明作为输出声明添加到AAD-UserReadUsingObjectId技术配置文件:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  ...
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="jobTitle" />
  </OutputClaims>
  ...
</TechnicalProfile>

3) 将jobTitle声明作为输出声明添加到依赖方技术配置文件中:

<RelyingParty>
  ...
  <TechnicalProfile Id="PolicyProfile">
    ...
    <OutputClaims>
      ...
      <OutputClaim ClaimTypeReferenceId="jobTitle" />
    </OutputClaims>
    ...
  </TechnicalProfile>
</RelyingParty>
于 2018-08-01T08:56:12.660 回答