如何在AAD B2C自定义策略中按要求读取用户?

时间:2020-07-29 08:10:06

标签: azure-ad-b2c

是否可以选择通过声明值(例如电子邮件地址)或通过自定义声明(例如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>

1 个答案:

答案 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"  />