【问题标题】:How to set IAP (Identity Aware Proxy) authentication for back-end API service running on a GKE cluster如何为 GKE 集群上运行的后端 API 服务设置 IAP(身份感知代理)身份验证
【发布时间】:2021-06-07 11:16:39
【问题描述】:

我有一个应用程序在前端做出反应,在后端有一个节点服务。该应用程序部署在 GKE 集群中。这两个应用程序都作为 NodePort 服务公开,扇出入口路径如下:

- host: example.com
   http:
     paths:
     - backend:
         serviceName: frontend-service
         servicePort: 3000
       path: /*
     - backend:
         serviceName: backend-service
         servicePort: 5000
       path: /api/*

我已为这两种服务启用了使用 IAP 的身份验证。为 Kubernetes 服务启用 IAP 时,会单独创建新的 Client Id 和 Client Secret。但是我需要从前端为后端 API 提供身份验证,因为他们有 2 个不同的帐户,这是不可能的,即当我从前端调用后端 API 服务时,身份验证失败,因为 cookie FE 提供的与后端服务不匹配。

处理这种情况的最佳方法是什么。有没有办法为这两种服务使用相同的客户端凭据,如果是,那是正确的方法还是有办法直接使用 IAP 对 Rest API 进行身份验证。

【问题讨论】:

  • 是否让两个服务使用相同的BackendConfig(因此使用相同的 IAP 客户端 secret)作为您的设置选项?

标签: authentication kubernetes google-cloud-platform google-kubernetes-engine kubernetes-ingress


【解决方案1】:

如果 IAP 是使用 BackendConfig 设置的,那么您可以为前端和后端应用程序设置两个单独的 BackendConfig 对象,但它们都为 oauthclientCredentials 使用相同的秘密 (secretName)。

对于前端应用

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name:  frontend-iap-config
  namespace: namespace-1
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: common-iap-oauth-credentials

对于后端应用

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name:  backend-iap-config
  namespace: namespace-1
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: common-iap-oauth-credentials

然后从各自的 kubernetes 服务对象中引用这些 BackendConfigs

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2013-06-01
    • 2019-01-21
    • 1970-01-01
    相关资源
    最近更新 更多