如何共享 OAuth 客户端

本页介绍如何与组织内的其他应用共享 OAuth 客户端。

概览

在项目之间共享 OAuth 客户端意味着,您可以为多个 Identity-Aware Proxy (IAP) 保护的应用使用单个自定义 OAuth 客户端,而不是为每个应用创建新的 OAuth 客户端。这种方法可以简化管理,尤其适合拥有大量应用的组织。

配置 IAP 时,您可以使用以下两种 OAuth 客户端类型之一:

  • Google 管理的 OAuth 客户端:IAP 默认会自动使用 此客户端。此内置选项无需手动创建客户端,但有两个主要限制:

    • 仅允许组织内的用户(内部用户)访问
    • 在权限请求页面上显示 Google Cloud 品牌,而不是您的 组织的品牌
  • 自定义 OAuth 客户端:您自行创建和管理此客户端。此选项:

    • 可跨多个应用共享
    • 允许自定义权限请求页面上的品牌
    • 支持外部用户(组织外部)访问

创建自定义 OAuth 客户端后,您可以灵活地将其用于单个应用,也可以跨多个应用共享。共享自定义 OAuth 客户端具有以下几项优势:

  • 减少管理多个客户端的管理开销
  • 简化了为不应有权访问“凭据”页面的团队成员启用 IAP 的过程
  • 有助于以编程方式(非浏览器)访问受 IAP 保护的应用

如需了解如何创建 OAuth 客户端,请参阅 为 IAP 创建 OAuth 客户端。 如需详细了解 Google 管理的 OAuth 客户端,请参阅 自定义 OAuth 配置以启用 IAP

准备工作

按照 OAuth 客户端创建中的步骤创建新的 OAuth 客户端,或使用现有的 OAuth 客户端。

以编程方式使用

为以编程方式使用配置 OAuth 客户端 ,以允许非浏览器应用使用受 IAP 保护的资源进行身份验证。这样,脚本、自动作业和后端服务就可以安全地访问受保护的应用,而无需用户以交互方式登录。

您可以在资源 层次结构中的任何级别(组织文件夹项目)应用这些身份验证设置。

如需了解实现步骤,请参阅 程序化身份验证指南IAP 设置管理 文档。

gcloud

  1. 准备一个包含 OAuth 客户端 ID 的设置文件:

    cat << EOF > SETTINGS_FILENAME
      access_settings:
        oauth_settings:
          programmatic_clients: [clientId1, clientId2, ..]
    EOF
    
  2. 使用 gcloud iap settings set 命令应用设置:

    gcloud iap settings set SETTINGS_FILENAME \
      [--organization=ORGANIZATION | --folder=FOLDER | --project=PROJECT] \
      [--resource-type=RESOURCE_TYPE] \
      [--service=SERVICE] \
      [--version=VERSION]
    

    示例命令:

    # Organization level
    gcloud iap settings set SETTINGS_FILENAME --organization=ORGANIZATION
    
    # Folder level
    gcloud iap settings set SETTINGS_FILENAME --folder=FOLDER
    
    # Project level (web resources)
    gcloud iap settings set SETTINGS_FILENAME \
      --project=PROJECT \
      --resource-type=iap_web
    
    # App Engine service in a project
    gcloud iap settings set SETTINGS_FILENAME \
      --project=PROJECT \
      --resource-type=app-engine \
      --service=SERVICE
    

    其中:

    • SETTINGS_FILENAME:您准备的 YAML 文件。
    • ORGANIZATION:组织 ID
    • FOLDER:文件夹 ID
    • PROJECT:项目 ID
    • RESOURCE_TYPE:IAP 资源类型 (app-engineiap_webcomputeorganizationfolder
    • SERVICE:服务名称(对于 computeapp-engine 资源类型,此参数是可选的)
    • VERSION:版本名称(不适用于 compute, 对于 app-engine,此参数是可选的)

API

  1. 准备一个设置 JSON 文件:

    cat << EOF > iap_settings.json
    {
      "access_settings": {
        "oauth_settings": {
          programmatic_clients: [clientId1, clientId2, ..]
        }
      }
    }
    EOF
    
  2. 获取资源名称:

    gcloud iap settings get \
      [--organization=ORGANIZATION | --folder=FOLDER | --project=PROJECT] \
      [--resource-type=RESOURCE_TYPE] \
      [--service=SERVICE] \
      [--version=VERSION]
    
  3. 使用资源名称更新设置:

    curl -X PATCH \
    -H "Authorization: Bearer