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

WSO2 API Manager双节点集群JWT令牌验证失败求助

WSO2 API Manager集群JWT验证错误排查方案

问题背景

双节点All-in-One模式WSO2 APIM集群中,生成JWT令牌后调用数次请求会触发如下错误:

ERROR - JWTValidator Invalid JWT token. XXXXX":"RS256"}

客户端需重新生成令牌才能继续请求;单节点生成令牌后切换到另一节点,令牌可正常工作,但存在提前吊销/过期的异常情况,且已确认节点系统时间无显著差异。

核心原因

集群节点间的JWT签名密钥、令牌缓存、会话数据未实现同步,导致跨节点验证时出现一致性问题。

修复步骤

1. 统一节点密钥库

确保两个节点使用完全相同的wso2carbon.jks密钥库文件:

  • 从主节点复制<APIM_HOME>/repository/resources/security/wso2carbon.jks到从节点对应路径
  • 替换后重启两个节点服务

2. 启用分布式令牌缓存

配置节点使用共享数据库同步令牌缓存:
编辑<APIM_HOME>/repository/conf/deployment.toml,添加以下配置(两个节点保持一致):

[cache]
enable_distributed_cache = true

[cache.jdbc]
enabled = true
datasource = "WSO2_SHARED_DB"

确保两个节点已配置同一个WSO2_SHARED_DB数据源。

3. 持久化会话数据

将身份验证会话数据存储到共享数据库,避免本地内存隔离:
在deployment.toml中添加:

[session_data.persistence]
enabled = true
datasource = "WSO2_SHARED_DB"

4. 同步令牌吊销列表(TRL)

配置节点间同步令牌吊销状态:

[revocation]
enable_remote_cache = true
cache_expiry_time = 300

5. 统一JWT issuer配置

修改JWT issuer为集群负载均衡地址(而非单个节点地址),确保所有节点生成的令牌issuer字段一致:

[apim.jwt]
enable = true
signing_algorithm = "RS256"
issuer = "https://<集群负载均衡域名>:<端口>/oauth2/token"

验证流程

  1. 重启所有节点,通过负载均衡地址生成JWT令牌
  2. 交替向两个节点发起请求,确认令牌可正常通过验证
  3. 重启任意节点,使用旧令牌请求,验证无提前吊销/过期问题

内容的提问来源于stack exchange,提问作者Issa Dicko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:20:01