Keycloak集成Azure ADB2C时sub声明为空的配置问题咨询
Azure AD B2C 与 Keycloak 集成
sub 声明为空调整方案 快速定位前置步骤:直接调用B2C授权端点获取原始ID令牌,解码确认
sub字段是否存在非空值,以此判断问题出在B2C策略侧还是Keycloak配置侧。
一、Azure AD B2C 策略调整项
- 若使用标准用户流:进入「用户流」> 选择对应认证流 > 「应用声明」配置页,勾选用户ID选项,该选项对应底层
sub声明,勾选后B2C返回的令牌会默认携带该字段。 - 若使用自定义IEF策略:
- 在依赖方(RelyingParty)节点的
OutputClaims列表中添加sub的输出配置:
<OutputClaim ClaimTypeReferenceId="sub" PartnerClaimType="sub" />- 确认声明架构中
sub的ClaimType定义存在,且取值绑定到用户对象ID,没有被后续声明转换操作覆盖为空。
- 在依赖方(RelyingParty)节点的
- 检查B2C的「令牌兼容性设置」,确认没有开启删除sub声明的兼容选项。
二、Keycloak 映射配置调整项
- 检查B2C身份提供商的映射器配置:进入「身份提供商」> 对应B2C实例 > 「映射器」页,删除所有将
sub声明设置为硬编码空值的错误映射器。 - 新增显式
sub映射:新建类型为Attribute Importer的映射器,源属性名称填sub,目标声明/用户属性名称填sub,勾选添加到ID令牌、访问令牌的选项。 - 检查B2C身份提供商的「声明过滤规则」,确认
sub没有被加入排除声明列表。 - 检查Keycloak全局用户配置中的声明重写规则,确认没有全局覆盖
sub的取值为空。
内容的提问来源于stack exchange,提问作者CloudSpace03
相关产品推荐
相关产品推荐

