oauth2-proxy `/oauth2/auth` 在有效的 JWT 令牌上返回 401

问题描述 投票:0回答:1

我正在使用

nginx
使用
oauth2-proxy
指令对
auth_request
进行身份验证检查。 Auth0 是我的上游身份验证提供商。 Auth0 具有为服务帐户配置的机器对机器 JWT 身份验证 API 和针对人类用户的正常身份验证例程。

人类/浏览器身份验证路径效果很好,但是当我尝试使用 JWT 令牌在

/oauth2/auth
上进行身份验证时,当请求在
Authorization: Bearer <valid-token>
标头中具有有效的 JWT 令牌时,oauth2-proxy 将返回 401。我已经使用
tcpdump
验证了对 oauth2-proxy 的请求。

daa1b934b391:/# curl -i -H "Authorization: Bearer <valid-token>" http://localhost:4180/oauth2/auth
HTTP/1.1 401 Unauthorized
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Wed, 17 Jul 2024 20:33:50 GMT
Content-Length: 13

Unauthorized

我问题的关键oauth2-proxy是否旨在以这种方式处理JWT令牌验证,或者当没有有效的会话cookie集时/oauth2/auth

总是返回401(就像服务的情况一样)使用 JWT 令牌的帐户)?我假设设置 
--skip-jwt-bearer-tokens=false
 (默认)以及相关的 JWT 令牌配置参数,oauth2-proxy 将尝试验证令牌,并在验证后返回 2XX HTTP 响应。

如果我的假设是正确的,并且

no session + valid token = HTTP/2XX

是正确的,那么可以通过哪些日志记录来找出我的配置中缺少的内容?我一直没有成功地让 oauth2-proxy 变得非常“冗长”。

authentication oauth-2.0 oauth jwt oauth2-proxy
1个回答
0
投票
解决方案相当简单。是的,正如评论的那样,oauth2-proxy 将很好地验证 JWT 令牌。尽管 ChatGPT 和 Claude 都发誓我应该设置

skip_jwt_bearer_tokens=false

,但需要将其设置为 
skip_jwt_bearer_tokens=true
 才能验证 JWT 令牌。文档对此也不是特别清楚。如果设置不正确,则不会发生 JWT 令牌的日志记录。一旦更正的日志消息显示在 JWT auth 上,如果授权标头存在,oauth2-proxy 将返回 2XX 或 40X。

© www.soinside.com 2019 - 2024. All rights reserved.