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

Azure B2C自定义策略SAML集成报错issuerUserId缺失如何解决

错误根因

CreateAlternativeSecurityId 声明转换逻辑要求必须传入issuerUserId声明作为入参,但B2C上下文执行到该转换时没有找到对应的声明值,因此触发执行失败,返回SAML responder状态错误。

解决方案

可按以下优先级尝试修复:

  1. 添加Keycloak到B2C的用户ID映射
    找到你配置Keycloak作为外部IDP的<ClaimsProvider>节点,在其<OutputClaims>子节点中添加如下映射配置:

    <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
    

    OIDC协议标准中sub字段为身份提供方返回的用户唯一标识,Keycloak默认会返回该字段,上述配置会将Keycloak返回的用户ID赋值给B2C上下文的issuerUserId声明。

  2. 确认issuerUserId声明已定义
    检查你的自定义策略扩展文件的<ClaimsSchema>节点,确保已经定义了该声明类型,示例配置如下:

    <ClaimType Id="issuerUserId">
      <DisplayName>外部身份提供方下发的用户ID</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    
  3. 检查声明传递链路
    核对用户旅程的编排步骤,确保在执行CreateAlternativeSecurityId转换的步骤之前,issuerUserId声明已经被正确获取,没有被步骤的声明过滤规则剔除。

  4. 移除不需要的声明转换
    如果你的业务场景不需要用到AlternativeSecurityId声明(无需将外部用户ID同步存储到B2C目录、返回给Spring应用的SAML断言也不需要该值),可以直接删除<OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>配置项即可消除报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:03