是否可以选择通过声明值(例如电子邮件地址)或通过自定义声明(例如extension_company_user_id
等)来读取Azure AD B2C租户用户(本地或社交用户)。
实际上我需要以下内容:
<TechnicalProfile Id="AAD-UserReadUsingClaimValue">
<Metadata>
<Item Key="Operation">Read</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="company_user_id" PartnerClaimType="extenstion_company_user_id" />
</InputClaims>
<OutputClaims>
<!-- Required claims -->
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferenceId="country" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
<OutputClaim ClaimTypeReferenceId="extension_company_user_id" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
答案 0 :(得分:0)
您不能这样做,因为声明没有唯一性约束。您需要通过signInNames属性或userIdentities / alternativeSecurityId属性读取用户,这些用户具有唯一性约束。
这将是有效的:
<InputClaim ClaimTypeReferenceId="userEnteredEmail" PartnerClaimType="signInNames.emailAddress" />
如果extenstion_company_user_id
将是唯一的,并且是用户标识符,则将其写入signInNames.companyUserId
。在自定义策略中,AAD B2C会自动注册架构扩展。
然后您可以读取这样的用户:
<InputClaim ClaimTypeReferenceId="company_user_id" PartnerClaimType="signInNames.companyUserId" />