一段时间以来,我一直在使用内置的SignUpOrSignIn策略,但是现在我转向了自定义策略。
设置内置策略时,我可以从内置应用程序声明列表中进行选择(例如displayName
和jobTitle
),然后选择我想成为的声明用户登录时返回令牌。
现在,我正在设置自定义策略,我想做同样的事情,但是我无法使其正常工作。
到目前为止,在TrustFrameworkBase
中,我添加了ClaimType
中的jobTitle
:
<ClaimType Id="jobTitle">
<DisplayName>Job Title</DisplayName>
<DataType>string</DataType>
<UserHelpText>Job title.</UserHelpText>
</ClaimType>
我已将以下OutputClaim
添加到ID为TechnicalProfile
的{{1}}:
login-NonInteractive
并且我已将以下<OutputClaim ClaimTypeReferenceId="jobTitle" PartnerClaimType="jobTitle" />
添加到ID为OutputClaim
的{{1}}:
TechnicalProfile
但是SelfAsserted-LocalAccountSignin-Email
声明并未与令牌中的其他声明一起通过。我已经为<OutputClaim ClaimTypeReferenceId="jobTitle" />
做过同样的事情,而且确实可行。如果我将第一个jobTitle
更改为:
given_name
然后通过OutputClaim
声明,但带有<OutputClaim ClaimTypeReferenceId="jobTitle" PartnerClaimType="given_name" />
声明的值。这意味着我只是使用了错误的jobTitle
,但似乎在任何地方都没有它们的列表。
当用户使用其本地B2C帐户登录时,如何获得内置的职位名称属性作为令牌中的声明返回?
答案 0 :(得分:1)
如果您只想为用户阅读 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>