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

如何在Azure AD B2C中解绑已关联的工作/学校账户?

我正在寻找将Azure工作/学校账户从B2C用户中解绑的相关示例。我已使用示例策略Account-Linkage-Unified,可成功关联工作/学校账户,但解绑功能通过如下Metadata标签在"identities"集合中查找对应条目以展示解绑按钮,而工作/学校账户的Issuer为https://login.microsoftonline.com/{租户Id}/v2.0。
现有配置如下:

<Metadata>
  <Item Key="ClaimValueOnWhichToEnable">login.microsoftonline.com</Item>
</Metadata>

我需要实现当从identities集合拉取的值匹配"login.microsoftonline.com"时即可触发匹配,请问有什么可行的实现方案?

可行实现方案

问题核心在于现有策略默认对issuer字段做精确值匹配,而Azure AD工作/学校账户的issuer为带租户ID的完整URL,无法和固定配置的域名值精确匹配,可选择以下任意一种方案实现需求:

  • 方案1:调整声明转换逻辑,替换精确匹配为子串包含匹配
    找到策略中用于判断解绑按钮是否可见的声明转换节点,将原有的CompareClaims精确值对比逻辑替换为StringContains子串匹配逻辑,示例配置参考:
    <ClaimsTransformation Id="CheckIsAADWorkAccount" TransformationMethod="StringContains">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="issuer" TransformationClaimType="inputClaim" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="contains" DataType="string" Value="login.microsoftonline.com" />
        <InputParameter Id="ignoreCase" DataType="boolean" Value="true" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="isUnlinkAllowed" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
    
    将该转换加入遍历identities集合的处理步骤中,只要对应身份条目的issuer包含指定字符串,就会将解绑可用标记设为true,触发解绑按钮显示。
  • 方案2:前端自定义页面逻辑控制
    无需修改核心策略配置,直接在B2C自定义页面的HTML中加入JavaScript逻辑,在页面加载完成后遍历返回的identities集合,判断每个身份条目的issuer字段是否包含login.microsoftonline.com,手动控制对应解绑按钮的显示状态,该方案改造成本最低。
  • 方案3:提取issuer域名后做精确匹配
    为避免子串匹配可能出现的误判,可先添加声明转换,将完整issuer URL按/拆分提取出域名段,再和login.microsoftonline.com做精确匹配,逻辑更严谨,适合需要严格控制匹配范围的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:00:05