quay.io OAuth2 代理:将承载令牌设置为授权 Header

quay.io OAuth2 Proxy: Setting Bearer token to Authorization Header

我想做什么

调用由 oauth2 代理代理的 URL。如果没有可用的身份验证,oauth2 代理应该执行授权代码流。如果已经有可用的身份验证,则应在转发到上游的请求中将访问令牌设置为授权 Header。

我试过的

根据 documentation 我预计,在设置 --pass-authorization-header 时,请求的令牌应添加到授权中 header。

我还尝试了 --pass-access-token,它应该设置 X-Forwarded-Access-Token header。 我也看不到这个 header 在我的服务中。

有人可以向我解释我做错了什么吗?

我找到了解决方案。

关于 github 问题的 post 导致我犯了错误。

我确实误解了请求是什么,响应是什么以及如何使用 nginx 入口处理它们。

If you are using OAuth2-Proxy with a Kubernetes ingress using nginx subrequests (https://kubernetes.github.io/ingress-nginx/examples/auth/oauth-external-auth/) the data that comes back to nginx is actually an HTTP response, so you will need to use HTTP Response headers (the --pass-* options configure request headers to the upstream). Try --set-authorization-header and then you need to use this annotation to have the Kubernetes take the subrequest response header and add it to the proxied request header: nginx.ingress.kubernetes.io/auth-response-headers https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#external-authentication