azure-ad-b2c - 通过自我声明的电子邮件查找用户,如果用户存在,则重定向到用户的社交登录提供商
问题描述
我正在尝试提出一个 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 声明。您必须阅读受支持的属性。此文档页面中提供了支持的声明列表:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/user-profile-attributes
您可以在阅读“alternateSecurityIds”声明中找到您要查找的信息。然后,您需要使用GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation声明转换来解析该用户的身份提供者。
推荐阅读
- php - 将模型内的模型和调用函数自动加载到整个项目中
- meteor - 在流星中拖放
- rest - SharePoint 在线创建具有特殊字符文件名的上传会话
- excel - 在excel公式中多次重用函数输出
- angular - 角度如何处理ng-content中的事件
- laravel - Laravel Crinsane/LaravelShoppingcart associate() 不起作用
- java - 如何从自定义适配器类关闭导航抽屉
- java - 除非重新启动,否则我的应用不会创建新文件
- c++ - C++/CLI 包装器不能使用来自本机 C++ dll 的向量
- javascript - 使用 vue 和 laravel 导入 Excel