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

WSO2 IS 7.1.0无法在x-jwt-assertion头中发送自定义声明#24397

解决WSO2 IS 7.1作为APIM 4.5第三方密钥管理器时自定义声明不显示在x-jwt-assertion的问题

1. 确认IS中自定义声明的配置

  • 在IS管理控制台的Claim Management中,检查自定义声明是否已创建,并且勾选了Supported by JWT选项
  • 确保声明的Local Claim URI和JWT Claim URI正确映射,例如本地URI设为http://wso2.org/claims/custom/myattr,JWT URI设为my_custom_attr(按需命名)
  • 验证用户档案中的自定义属性已关联到该声明:在用户编辑页面的Profile标签下,确认对应自定义属性有值且与声明绑定

2. 配置APIM允许从密钥管理器获取自定义声明

在APIM的<APIM_HOME>/repository/conf/deployment.toml中添加以下配置:

[apim.jwt]
enable_custom_claims_from_km = true

# 可选:若需全局包含所有自定义声明,添加此配置
apim.jwt.include_all_custom_claims = true

修改后重启APIM服务

3. 配置IS在令牌中包含自定义声明

在IS的<IS_HOME>/repository/conf/deployment.toml中配置:

[oauth.jwt]
include_custom_claims = true

# 确保JWT生成时包含用户属性映射的声明
[oauth.id_token]
include_user_claims = true

重启IS服务

4. 检查自定义JWT处理jar包逻辑

  • 确认你的jar包在生成x-jwt-assertion时未过滤自定义声明,可通过调试日志跟踪JWT生成流程
  • 启用IS和APIM的调试日志排查声明传递:
    在各自的deployment.toml中添加:
    [logger.oauth2]
    level = "DEBUG"
    appenders = ["CONSOLE", "FILE"]
    
    [logger.jwt]
    level = "DEBUG"
    appenders = ["CONSOLE", "FILE"]
    
    重启服务后,查看日志中是否有自定义声明的读取和传递记录

5. 验证与测试

  • 调用受保护的API,提取响应头中的x-jwt-assertion值
  • 用JWT解码工具解码JWT,检查Payload中是否存在自定义声明
  • 若仍未出现,检查API的订阅范围配置:确保API的允许声明列表包含你的自定义声明,或全局配置允许所有声明传递

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:52:39