如何将AWS ALB的X-AMZN-OIDC-*头转为Authorization Bearer Token头?
可以通过AWS ALB的请求头修改功能结合AWS Load Balancer Controller的Ingress注解实现这个需求,具体配置如下:
核心配置思路
利用ALB监听器规则的modify-request-header动作,提取ALB注入的X-AMZN-OIDC-*令牌值,拼接成Bearer <token>格式后添加到Authorization请求头中。
具体Ingress配置示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: # 定义修改请求头的动作 alb.ingress.kubernetes.io/actions.rewrite-auth-header: | { "Type": "modify-request-header", "ModifyRequestHeaderConfig": { "HeadersToAdd": [ { "HeaderName": "Authorization", "HeaderValue": "Bearer ${request.headers.X-AMZN-OIDC-ACCESS-TOKEN}" } ], # 可选:如果需要覆盖已有的Authorization头,添加以下配置 "HeadersToOverwrite": ["Authorization"] } } # 基础ALB配置 alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: 'true' # OIDC认证相关配置(根据你的实际环境调整) alb.ingress.kubernetes.io/auth-type: oidc alb.ingress.kubernetes.io/auth-oidc-issuer: "你的OIDC发行者URL" alb.ingress.kubernetes.io/auth-oidc-client-id: "你的OIDC客户端ID" name: 你的Ingress名称 spec: ingressClassName: alb rules: - host: 你的域名.com http: paths: - path: / pathType: Prefix backend: # 先引用定义好的头修改动作 service: name: rewrite-auth-header port: name: use-annotation
关键说明
- 令牌头选择:根据下游服务需求选择对应的令牌头:
- 使用访问令牌:
X-AMZN-OIDC-ACCESS-TOKEN - 使用身份令牌:
X-AMZN-OIDC-ID-TOKEN
- 使用访问令牌:
- 请求头覆盖:如果请求原本携带
Authorization头,添加HeadersToOverwrite字段可以强制用新的Bearer令牌覆盖原有值。 - 动作引用:Ingress的path必须将后端指向注解中定义的
rewrite-auth-header动作,这样请求会先完成头修改,再转发到实际业务服务。
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

