通过OAuth2授权不同的API端点

p4tfgftt  于 2022-10-08  发布在  其他
关注(0)|答案(1)|浏览(172)

我目前使用oauth2-proxy保护我的API(在K8上运行),然后将请求重定向到API。

由于内容范围(在API级别)应因子组而异,因此这些组应仅针对其有权的范围进行授权。访问令牌提供了所需的子组从属关系,但我无法在处理身份验证的代理和执行授权的API之间架起一座桥梁。我也只想使用单一的API和OAuth2基础设施。

是否可以将访问令牌传递给下游API?此模式的最佳实践是什么?

有谁能给我指个方向吗?干杯

c3frrgcw

c3frrgcw1#

是的,这是可能的:请参见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

结合这一点,在ngix入口

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!

请注意,标头名称不是Authorization,并且值中没有Bearer前缀。因此,使用它的服务可能不得不改变。例如,如果您使用Spring Boot,则必须设置一个自定义的BearerTokenResolver

(额外好处:如果您使用具有OIDC身份验证的AWS ELB,而不是OAuth2-Proxy和nginx入口,则系统基本相同。只是标题名称不同。)

相关问题