我正在使用
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 变得非常“冗长”。
skip_jwt_bearer_tokens=false
,但需要将其设置为
skip_jwt_bearer_tokens=true
才能验证 JWT 令牌。文档对此也不是特别清楚。如果设置不正确,则不会发生 JWT 令牌的日志记录。一旦更正的日志消息显示在 JWT auth 上,如果授权标头存在,oauth2-proxy 将返回 2XX 或 40X。