首页 > 解决方案 > Azure B2C:使用自定义声明查询 AAD?

问题描述

请注意,这与之前的问题有关,但我已经通过自定义策略对 Azure Active Directory (AAD) 有了更好的了解。

是否可以使用自定义声明查询 AAD?例如,我想使用一个名为 organizationName (extension_organizationName) 的声明来检查它是否已经定义。如果它已经定义,那么我不想创建帐户。

这是我为确定这一点而编写的索赔提供者:

    <ClaimsProvider>
      <DisplayName>Azure Active Directory</DisplayName>
        <TechnicalProfiles>
        <!--Demo: This technical profile tries to find a local account with provided email address-->
        <TechnicalProfile Id="AAD-UserReadOrganization-NoError">
          <Metadata>
            <Item Key="Operation">Read</Item>
            <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
          </Metadata>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="extension_organizationName" Required="true" />
          </InputClaims>
          <OutputClaims>
            <!-- Required claims -->
            <OutputClaim ClaimTypeReferenceId="tempOrganization"/>
          </OutputClaims>
          <IncludeTechnicalProfile ReferenceId="AAD-Common" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>

但是,我遇到了与之前相同的验证错误,但原因不同:

无法验证提供的信息。

如果我无法查询组织,那么我还能如何检查 AAD 中是否已存在自定义声明值?

标签: azureazure-active-directoryazure-ad-b2cazure-ad-b2c-custom-policy

解决方案


正如 Abhishek 所说,您无法使用自定义extension_organizationName声明查询 AAD B2C。另一种解决方案是通过调用自定义 REST API检查组织声明是否已存在于 AAD 中,该 API 通过 Graph API 查询 AAD(类似于本博文中描述的方式)。


推荐阅读