首页 > 解决方案 > 通过自我声明的电子邮件查找用户,如果用户存在,则重定向到用户的社交登录提供商

问题描述

我正在尝试提出一个 Azure AD B2C 策略,以根据步骤 1 中提供的电子邮件地址查找用户。

如何使用提供的自我声明的电子邮件地址查询 AAD,然后将用户重定向到他们注册的社交登录提供商(如果有)?

我有一个编排步骤的草稿:

<OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
        <ClaimsExchange Id="AAD-UserReadIssuersUsingSignInName" TechnicalProfileReferenceId="AAD-UserReadIssuersUsingSignInName" />
        </ClaimsExchanges>
</OrchestrationStep>

和技术简介

                <TechnicalProfile Id="AAD-UserReadIssuersUsingSignInName">
                    <Metadata>
                        <Item Key="Operation">Read</Item>
                        <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
                        <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">An account could not be found for the provided user ID.</Item>
                    </Metadata>
                    <IncludeInSso>false</IncludeInSso>
                    <InputClaims>
                        <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames.emailAddress" />
                    </InputClaims>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="issuers" />
                    </OutputClaims>
                    <OutputClaimsTransformations>
                        <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
                    </OutputClaimsTransformations>
                    <IncludeTechnicalProfile ReferenceId="AAD-Common" />
                </TechnicalProfile>

当我上传策略时,我收到 1 个验证错误。

验证失败:在租户“*** .onmicrosoft.com”的策略“***”中发现 1 个验证错误。Azure Active Directory 提供程序技术配置文件“AAD-UserReadIssuersUsingSignInName”不支持输出声明“颁发者”政策 ' *** '。如果它是具有默认值的声明,请将 AlwaysUseDefaultValue="true" 添加到输出声明映射中。策略“B2C_1A_SignUpSignInLSG_Test”的 Azure Active Directory 提供程序技术配置文件“AAD-UserReadIssuersUsingSignInName”不支持输出声明“颁发者”。如果是具有默认值的声明,则将 AlwaysUseDefaultValue="true" 添加到输出声明映射

标签: azure-ad-b2cazure-ad-b2c-custom-policy

解决方案


如错误消息中所述:“颁发者”不是您可以从目录中读取的有效 Azure AD 声明。您必须阅读受支持的属性。此文档页面中提供了支持的声明列表:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/user-profile-attributes

您可以在阅读“alternateSecurityIds”声明中找到您要查找的信息。然后,您需要使用GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation声明转换来解析该用户的身份提供者。


推荐阅读