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

使用Keycloak作为Oauth2_proxy提供商调用/userinfo API报invalid_token错误

排查oauth2-proxy与Keycloak集成时的Token验证失败问题

我来帮你一步步排查这个问题,从日志里的invalid_token和Token verification failed来看,核心问题是oauth2-proxy拿到的Token在调用Keycloak的userinfo接口时验证不通过,下面是几个最可能的原因和排查步骤:

1. 优先检查URL一致性(最可能的元凶)

你配置的login-url用的是http://localhost:7575/...,但redeem-url和validate-url用的是http://172.20.0.10:8080/...,这两个Base URL不一致会直接导致Token验证失败。

Keycloak生成的JWT Token里会包含一个iss(签发者)字段,这个字段的值是Keycloak Realm配置里的Issuer URL。oauth2-proxy在验证Token时,会检查Token的iss是否和它访问Keycloak接口用的Base URL匹配,如果不匹配就会判定Token无效。

排查步骤:

  • 登录Keycloak后台,进入你的master Realm(或者你创建的自定义Realm)
  • 点击左侧菜单的「Realm Settings」→「General」,找到「Endpoints」下的「OpenID Endpoint Configuration」,点击这个链接
  • 在打开的JSON里找到issuer字段,比如应该是http://172.20.0.10:8080/auth/realms/master
  • 把oauth2-proxy的login-url、redeem-url、validate-url全部改成用这个一致的Base URL,比如login-url应该改成http://172.20.0.10:8080/auth/realms/master/protocol/openid-connect/auth
  • 重启oauth2-proxy容器,重新测试

2. 检查Scope配置是否正确

你当前指定的-scope='test-scope'可能缺少了访问userinfo接口必需的权限。默认情况下,Keycloak的userinfo接口要求Token包含openid scope,否则即使Token有效,也会被拒绝访问(不过你的错误是验证失败,也有可能是Scope导致Token的Claims不完整)。

排查步骤:

  • 先临时把oauth2-proxy的scope改成默认的必要值:-scope='openid email profile'
  • 同时检查Keycloak客户端的配置:进入你的abcd-client客户端,点击「Client Scopes」标签,确认openid、email、profile这些默认Scope已经添加到客户端的「Assigned Default Client Scopes」里
  • 重启oauth2-proxy后测试,如果问题解决,再去配置你的test-scope,确保它包含了openid的权限或者相关的用户信息读取权限

3. 验证Token的Audience(aud)是否匹配

Keycloak生成的Token里的aud(受众)字段应该是你的客户端IDabcd-client,如果这个字段不匹配,oauth2-proxy验证Token时也会失败。

排查步骤:

  • 手动调用Keycloak的/token接口获取一个Token(你说这个接口正常,所以可以直接拿)
  • 把Token复制到任意JWT解析工具(比如本地打开jwt.io,无需联网即可解析)里,查看aud字段的值
  • 如果aud不是abcd-client,检查Keycloak客户端的配置:进入客户端→「Advanced」→「OpenID Connect Compatibility Modes」,确保没有修改过「Audience」相关的配置;另外确认客户端的「Access Type」是confidential(因为你用了Client Secret,这个应该是对的,但再确认下)

4. 检查Keycloak和oauth2-proxy的版本兼容性

你用的oauth2-proxy是v5.1.1版本,这个版本比较老(2020年左右发布的),如果你的Keycloak版本是较新的(比如Keycloak 11+),可能存在一些协议兼容性问题。

排查步骤:

  • 查看你的Keycloak版本(在Keycloak后台首页可以看到)
  • 如果Keycloak版本高于10.x,尝试升级oauth2-proxy到较新的版本(比如v7+或更高),新版本对Keycloak的支持更完善

内容的提问来源于stack exchange,提问作者Sumit Jindal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:37:57