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

WSO2 APIM中如何将JWT的preferred_username映射到Siddhi查询的userId

解决思路
  • 先验证JWT令牌内容:用jwt.io解析API调用时携带的JWT令牌,确认preferred_username字段是否存在。如果Keycloak没返回这个字段,先在Keycloak客户端配置里,把preferred_username添加到客户端范围的「可选声明」并设置为默认返回,确保令牌包含该字段。
  • 检查Claim Mapping配置方向:确认你配置的映射是「Keycloak的远程声明preferred_username」映射到「WSO2的本地声明http://wso2.org/claims/userid」,不要搞反映射方向。
  • 启用密钥管理器的Claim Mapping开关:在WSO2 APIM的Keycloak密钥管理器配置页面,检查是否开启了「启用声明映射」选项,默认可能未启用,需手动开启后保存配置。
  • 验证WSO2本地声明配置:登录WSO2 APIM的管理控制台,进入「身份 > 声明 > 管理声明」,找到http://wso2.org/claims/userid声明,确认它的属性设置正确,没有被其他规则覆盖,且标记为支持映射。
  • 检查Siddhi Query的取值方式:如果自定义策略里用的是$userId模板,确认它是否对应WSO2上下文中的userid声明。也可以尝试用$ctx:http://wso2.org/claims/userid直接提取声明值,避免模板变量的歧义。
  • 重启服务生效配置:修改Keycloak和WSO2 APIM的配置后,务必重启两个服务,确保新的声明映射规则被加载。
  • 排查WSO2声明过滤规则:检查<APIM_HOME>/repository/conf/identity/identity.xml中的Claim相关配置,确认没有全局规则过滤掉preferred_username或userid声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:52:03