You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C自定义策略适配本地登录与Azure AD IdP登录问题咨询

问题根因与修改方案

你遇到的本地登录报错问题是两个配置疏漏共同导致的,按以下步骤修改即可同时支持两种登录方式:

1. 修复本地登录技术配置的声明输出

本地登录走的SelfAsserted-LocalAccountSignin-Email技术配置默认不会显式赋值authenticationSource声明,需要你手动补充输出,避免后续步骤判定逻辑混乱:
在SelfAsserted-LocalAccountSignin-Email的<OutputClaims>节点下新增:

<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" AlwaysUseDefaultValue="true" />

确保本地登录成功后,authenticationSource的值固定为localAccountAuthentication,和社交登录的声明值明确区分。

2. 移除AAD技术配置的不必要强制默认值

你当前的AAD-GB-OpenIdConnect技术配置中,authenticationSource设置了AlwaysUseDefaultValue="true",虽然本地登录流程不会走到这个TP,但如果后续有会话复用等场景会出现声明覆盖问题,建议改为只有声明不存在时才用默认值:
把该行修改为:

<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="false" />

3. 清理用户旅程中无用的注册节点

你已经明确要求禁用自主注册,当前用户旅程Step2中的SignUpWithLogonEmailExchange属于冗余配置,直接删除即可,避免意外触发注册流程。
修改后的Step2<ClaimsExchanges>节点为:

<ClaimsExchanges>
  <ClaimsExchange Id="AzureADXXXXXXXXExchange" TechnicalProfileReferenceId="AAD-GB-OpenIdConnect" />
</ClaimsExchanges>

4. (可选)修复静默创建AAD用户的逻辑

你当前的用户旅程Step4仍然保留了SelfAsserted-Social的自断言页面,会要求AAD登录的用户补充信息,不符合你提到的「无需用户填写信息直接创建账号」的需求,直接删除Step4即可,AAD返回的声明足够直接创建B2C用户。

5. (可选)规避用户创建时的邮箱验证问题

如果你在首次AAD登录创建用户时出现邮箱验证相关报错,可以在AAD-UserWriteUsingAlternativeSecurityId的<PersistedClaims>节点新增:

<PersistedClaim ClaimTypeReferenceId="otherMails" />
<PersistedClaim ClaimTypeReferenceId="mail" PartnerClaimType="email" />

直接用AAD返回的可信邮箱填充字段,跳过B2C的邮箱验证逻辑。

修改完成后重新上传策略测试,本地登录和AAD社交登录都可以正常运行。

内容的提问来源于stack exchange,提问作者Architect Jamie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:06:01