使用oAuth2-proxy、Keycloak / oAuth2-proxy日志记录分析oAuth2客户端凭据流

egdjgwm8  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(280)

我在Kubernetes(AKS)上运行的应用程序有一个标准的oAuth2身份验证流程,我使用oAuth2-proxy和Keycloak添加了这个流程。通过浏览器的密码凭据授权类型/标准流程运行良好。在重定向到KC登录页面并手动登录后,oAuth2-proxy允许用户通过,并显示应用程序页面(echo服务器)。
现在我尝试使用授权类型的客户端凭证,例如来自Postman或Curl的凭证。我已经启用了“启用服务帐户”。我可以毫无问题地检索access_token / bearer令牌,并将其包含在标题“授权”中。我可以看到令牌有效,其他内容也看起来正确,但请求没有通过。oauth2-proxy将请求重定向到登录页面。
oAuth2-代理参数:

- --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

我不确定是否需要在入口中包含此脚本:

# 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
#   }

候选根本原因:

  • 令牌不包含选中的内容(KC配置...)
  • 令牌未以正确的方式包含在请求中
  • oAuth2-proxy配置缺少从请求中正确获取令牌所需的内容
  • oAuth2-代理无法根据Keycloak验证令牌

我可以访问Keycloak、Nginx和oauth2-proxy日志。到目前为止,oauth2-proxy日志帮助解决了早期的问题,但我一直缺少更好的分析方法。我希望oAuth2-proxy上有一个跟踪日志级别,我可以使用我的Helm值文件通过env var启用它,但文档中的可用选项似乎不合适。
我遗漏了什么?我如何才能更好地分析此问题?或者已经有了关于根本原因/修复的任何建议?

rmbxnbpk

rmbxnbpk1#

您需要启用“资源服务器模式”(--skip-jwt-bearer-tokens = true)标志。

相关问题