OAuth2 Proxy无法正确验证Keycloak签发JWT角色的问题求助
问题:OAuth2 Proxy添加allowed_roles后Keycloak JWT验证失败
现象
使用OAuth2 Proxy保护由Keycloak签发JWT的遗留资源服务器,无allowed_roles配置时,含匹配受众声明的有效JWT请求可正常转发至后端;但添加allowed_roles后,验证失败,报错[AuthFailure] Invalid authorization via session (unauthorized)...,无额外错误信息。
关键配置
skip_jwt_bearer_tokens = true extra_jwt_issuers = [ "http://localhost:8081/realms/master=backend" ] allowed_roles = [ "backend:read" ]
JWT令牌角色内容
"resource_access": { "backend": { "roles": [ "read" ] } }
使用版本
- Keycloak 25.0.1
- OAuth2 Proxy 7.9.0
解决方向
调整
skip_jwt_bearer_tokens参数:
若请求通过Bearer令牌访问且需Proxy验证角色,需将skip_jwt_bearer_tokens设为false。该参数为true时,Proxy会跳过对Bearer令牌的认证解析,无法读取JWT中的角色信息,进而导致授权失败。显式指定角色解析路径:
针对Keycloak的JWT结构,可添加role_path配置指定角色所在的JSON路径,确保Proxy正确提取角色:role_path = "resource_access.backend.roles" allowed_roles = [ "read" ]升级OAuth2 Proxy版本:
尽管相关角色解析问题已修复,但7.9.0版本可能仍存在边缘场景问题,尝试升级至最新稳定版本测试。
内容的提问来源于stack exchange,提问作者fabiankuenzer
相关产品推荐
相关产品推荐

