0

我正在寻找一种标准的 Oauth2.0 方法,用于服务类型用户使用密钥对 GCP 环境中托管的 API 进行身份验证。我得到的最接近的是service accounts带有密钥对的。

但是,我想避免ESP每次service account添加新配置时都更新配置(如下例所示)。

 securityDefinitions:
  service-1:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "service-1@example-project-12345.iam.gserviceaccount.com"
    x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/service-1@example-project-12345.iam.gserviceaccount.com"
  service-2:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "service-2@example-project-12345.iam.gserviceaccount.com"
    x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/service-2@example-project-12345.iam.gserviceaccount.com"

    #should be possible to leave the addition of service-X to the end client without needing to update this.

编辑:我尝试过使用Identity Platform,并且ESP在添加新用户时不需要更新配置:

securityDefinitions:
    auth0:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        x-google-issuer: "https://securetoken.google.com/{google-project-ID}"
        x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"
        x-google-audiences: "{google-project-ID}"

但是电子邮件/密码不是我的情况的选项,并且GCP Identity Platform似乎不支持秘密用户,除非我遗漏了什么?

有可能添加针对用户的自定义声明也是一件好事,这将消除在 API 代码中维护权限表的需要。

Apigee具有所有必需的功能,但是对于我的项目需求来说似乎是一个昂贵的过度复杂化。

4

1 回答 1

0

Identity-Aware Proxy为我的用例提供了功能。添加服务帐户时,只需设置IAP-secured Web App User,它将有权访问受保护的资源。谷歌文档在这里

在此处输入图像描述

于 2020-10-11T20:35:28.760 回答