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

如何处理未与Azure联合的域点击WorkAccount时的错误

没问题,咱们来解决这个问题——你想用自定义的用户通知替换掉Azure AD返回的、针对未联合域的错误页,结合你的Custom SignUpSignIn策略,具体可以按以下步骤实现:

解决方案步骤

1. 捕获Azure AD联合失败的特定错误码

当用户输入未与Azure AD联合的域邮箱时,Azure AD会返回明确的错误代码(典型的是AADSTS50105,含义为“用户的域未配置联合身份验证”)。我们需要先在自定义策略中配置捕获这个错误码,触发后续的自定义通知逻辑。

2. 定义自定义错误通知页面的内容

在策略的<ContentDefinitions>节点下,添加一个新的内容定义,指向你自己托管的自定义通知页面:

<ContentDefinition Id="api.error.unfederatedDomain">
  <LoadUri>~/tenant/templates/AzureBlue/custom-unfederated-error.html</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Custom Unfederated Domain Error Page</Item>
  </Metadata>
</ContentDefinition>

其中custom-unfederated-error.html是你自定义的页面,内容可以是类似“抱歉,你的邮箱所属域未与Azure AD联合,请选择其他登录方式或联系管理员”的友好提示,记得页面要托管在HTTPS可访问的地址上。

3. 修改用户旅程,添加错误处理分支

找到你SignUpSignIn用户旅程中调用Azure AD身份提供者的编排步骤,新增错误处理逻辑,当捕获到目标错误时跳转到自定义页面:

<OrchestrationStep Order="[对应步骤序号]" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="AzureADExchange" TechnicalProfileReferenceId="AzureAD-Common" />
  </ClaimsExchanges>
  <ErrorClaimsExchange>
    <ErrorClaimsExchange Id="HandleUnfederatedError" TechnicalProfileReferenceId="UnfederatedDomainErrorHandler" />
  </ErrorClaimsExchange>
</OrchestrationStep>

4. 创建错误处理的技术配置文件

在<ClaimsProviders>节点下,添加一个专门处理该错误的技术配置文件,负责将用户引导到自定义通知页面:

<ClaimsProvider>
  <DisplayName>Custom Error Handler</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="UnfederatedDomainErrorHandler">
      <DisplayName>Unfederated Domain Error Handler</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ContentDefinitionReferenceId">api.error.unfederatedDomain</Item>
      </Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="errorMessage" DefaultValue="抱歉,你的邮箱所属域未与Azure AD联合,请选择其他登录方式或联系管理员。" />
      </OutputClaims>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

5. 配置Azure AD技术配置文件的错误匹配规则

在你的Azure AD技术配置文件(通常是AzureAD-Common)中,添加元数据指定要捕获的错误码:

<TechnicalProfile Id="AzureAD-Common">
  <!-- 其他已有配置 -->
  <Metadata>
    <Item Key="ValidErrorCodes">AADSTS50105</Item>
  </Metadata>
</TechnicalProfile>

如果有其他相关错误码需要处理,可以用逗号分隔添加多个,比如AADSTS50105,AADSTSXXXX。

额外注意事项

  • 自定义页面必须通过HTTPS访问,Azure AD B2C不允许加载HTTP页面。
  • 可以根据品牌需求自定义页面样式,保持和你的登录流程视觉一致。
  • 测试时可以用一个未联合的域邮箱登录,验证是否正确跳转到自定义通知页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:09:47