OAuth2-proxy与Keycloak客户端凭证流验证失败排查求助
客户端凭证授权类型无法通过OAuth2-proxy验证(AKS+Keycloak环境)
环境与现状
我在Azure Kubernetes Service(AKS)上运行的应用已通过OAuth2-proxy和Keycloak实现标准OAuth2认证流程,密码凭证授权类型/浏览器标准流程可正常工作:重定向至Keycloak登录页手动登录后,OAuth2-proxy会放行请求并展示应用页面(echo server)。
现在尝试使用客户端凭证授权类型,通过Postman或Curl发起请求。已启用“Service Accounts Enabled”,能正常获取access_token/bearer token并将其放入“Authorization”请求头中,且token有效、内容无误,但请求仍无法通过,OAuth2-proxy会将请求重定向至登录页。
OAuth2-proxy配置参数
- --provider=keycloak-oidc - --client-id=nginx - --client-secret=topsecret - --redirect-url=https://my-redirect-url - --oidc-issuer-url=https://myurl - --silence-ping-logging - --auth-logging=true - --session-store-type=redis - --set-xauthrequest=true - --set-authorization-header=true - --pass-authorization-header=true - --pass-access-token=true - --insecure-oidc-allow-unverified-email - --show-debug-on-error - --errors-to-info-log - --cookie-secret=gf... - --cookie-httponly=false - --force-json-errors
Ingress配置疑问
不确定是否需要在Ingress中添加以下配置片段:
# nginx.ingress.kubernetes.io/configuration-snippet: | # auth_request_set $name_upstream_1 $upstream_cookie__oauth2_proxy_1; # access_by_lua_block { # if ngx.var.name_upstream_1 ~= "" then # ngx.header["Set-Cookie"] = "_oauth2_proxy_1=" .. ngx.var.name_upstream_1 .. ngx.var.auth_cookie:match("(; .*)") # end # }
可能的根因
- token不包含所需的验证内容(Keycloak配置问题)
- token在请求中的传递方式不正确
- OAuth2-proxy配置缺失,无法正确从请求中获取token
- OAuth2-proxy无法向Keycloak验证token有效性
日志分析需求
我可以访问Keycloak、Nginx和OAuth2-proxy的日志,此前OAuth2-proxy日志曾帮助解决过问题,但目前缺乏更有效的分析方式。希望能通过Helm values文件设置环境变量开启OAuth2-proxy的trace日志级别,但文档中的可用选项似乎不适用。
问题
请问我遗漏了什么?如何更好地分析该问题?或者是否有关于根因/修复方案的建议?
内容的提问来源于stack exchange,提问作者rob2universe
相关产品推荐
相关产品推荐

