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

Apache APISIX集成Keycloak时持续出现无效令牌错误求助

排查APISIX与Keycloak OIDC集成的无效令牌错误

以下是针对性的排查步骤,按优先级逐一验证:

1. 基础配置一致性检查

  • 确认APISIX openid-connect插件的client_id、client_secret与Keycloak客户端的配置完全一致,注意大小写、特殊字符(如空格、下划线)的匹配。
  • 验证discovery端点URL的正确性:
    • Keycloak 17+版本的端点格式为https://<keycloak-domain>/realms/<realm-name>/.well-known/openid-configuration(无/auth前缀)
    • 旧版本为https://<keycloak-domain>/auth/realms/<realm-name>/.well-known/openid-configuration
  • 在APISIX节点执行curl <discovery-url>,确保能返回完整的OIDC元数据(包含issuer、jwks_uri等字段),排除网络连通性问题。

2. 令牌有效性解析验证

  • 提取报错时的令牌(ID Token或Access Token),通过JWT解码工具解析后检查:
    • iss字段必须与Keycloak Realm的Issuer地址完全匹配(包括协议、域名、端口、Realm路径)
    • aud(受众)字段需包含APISIX配置的client_id,或azp字段等于该client_id
    • exp(过期时间)需晚于当前时间,避免令牌过期
  • 检查令牌签名算法alg,确保APISIX插件的token_signing_alg_values_expected包含该算法(默认支持RS256,若Keycloak用HS256需手动配置)。

3. AWS负载均衡器与网络配置验证

  • 确认AWS LB的X-Forwarded-Proto/X-Forwarded-For头已正确传递到APISIX,可通过APISIX的real_ip模块或proxy-rewrite插件配置,确保APISIX获取到正确的外部请求协议与IP。
  • 检查Keycloak客户端的Valid Redirect URIs,必须包含APISIX的回调地址(格式为https://<lb-domain>/apisix/plugin/openid-connect/callback),注意需使用LB的公网域名而非APISIX内部地址。
  • 验证Keycloak服务器能访问到APISIX的回调地址,排除AWS安全组、网络ACL或防火墙的阻断。

4. APISIX插件与日志排查

  • 查看APISIX的error.log(默认路径logs/error.log),搜索openid-connect关键词,获取具体错误信息(如签名验证失败、受众不匹配、JWKS获取失败等)。
  • 若Keycloak使用自签SSL证书,需将APISIX插件的ssl_verify设置为false(生产环境建议替换为可信CA签发的证书)。
  • 确认未错误配置token_introspection_endpoint,若开启令牌 introspection,需保证Keycloak客户端允许该操作,且APISIX能访问该端点。

5. Keycloak客户端细节配置

  • 将Keycloak客户端的Access Type设置为confidential,APISIX需通过client_secret完成身份验证。
  • 检查客户端是否开启了Authorization Enabled,确保授权码流程正常。
  • 若使用Refresh Token,确认Keycloak客户端的Refresh Token Lifespan配置合理,且APISIX插件的refresh_token_enabled设为true。

内容的提问来源于stack exchange,提问作者Abhishek Vashistha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:01:04