本页介绍如何与组织内的其他应用共享 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
准备一个包含 OAuth 客户端 ID 的设置文件:
cat << EOF > SETTINGS_FILENAME access_settings: oauth_settings: programmatic_clients: [clientId1, clientId2, ..] EOF使用
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-engine、iap_web、compute、organization或folder) - SERVICE:服务名称(对于
compute或app-engine资源类型,此参数是可选的) - VERSION:版本名称(不适用于
compute, 对于app-engine,此参数是可选的)
API
准备一个设置 JSON 文件:
cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: [clientId1, clientId2, ..] } } } EOF获取资源名称:
gcloud iap settings get \ [--organization=ORGANIZATION | --folder=FOLDER | --project=PROJECT] \ [--resource-type=RESOURCE_TYPE] \ [--service=SERVICE] \ [--version=VERSION]使用资源名称更新设置:
curl -X PATCH \ -H "Authorization: Bearer