
[英]oAuth2 server. Should I have single or different endpoints for different grant type
[英]Authorize different API endpoints via oauth2
我目前使用oauth2-proxy保护我的 API(在 k8s 上运行),然后将请求重定向到 API。
由于 scope 的内容(在 API 级别)应根据子组而有所不同,因此这些组应仅授权其标题为 scope。 访问令牌提供了所需的子组从属关系,但我无法弥合处理身份验证的代理和进行授权的 API 之间的差距。 我也只想使用单个 API 和 oauth2 基础设施。
是否可以将访问令牌传递给下游 API? 这种模式的最佳实践是什么?
有人可以指出我正确的方向吗? 干杯
是的,这是可能的:请参阅 oauth2-proxy 中的--pass-access-token
和--set-xauthrequest
选项。
例如,我在oauth2-proxy.cfg
中使用它
# Get JWT in x-auth-request-access-token
pass_access_token = true
set_xauthrequest = true
结合 nginx 入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/auth-response-headers: x-auth-request-access-token # This holds the JWT (without 'Bearer ')
nginx.ingress.kubernetes.io/auth-signin: http://dev.k8s.ese-ia/oauth2-proxy/start # external URL!
nginx.ingress.kubernetes.io/auth-url: http://oauth2-proxy.ese-ia.svc.cluster.local/oauth2-proxy/auth # internal service URL – must be fqdn to be reachable from the ingress!
请注意,header 名称不是Authorization
并且值中没有Bearer
前缀。 因此,可能必须更改使用它的服务。 例如,如果您使用 Spring 引导,则必须设置自定义BearerTokenResolver
。
(奖励:如果您使用具有 OIDC 身份验证的 AWS ELB 而不是 oauth2-proxy 和 nginx 入口,则系统基本相同。只有 header 名称不同。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.