为 IAP 创建自定义 OAuth 客户端

本页介绍了在使用自定义 OAuth 配置启用 Google 身份 IAP 时如何创建 OAuth 客户端。

如果您想使用 Google 管理的 OAuth 客户端启用 IAP,请参阅使用 Google 管理的 OAuth 客户端启用 IAP

创建 OAuth 客户端

您最多可以使用Google Cloud 控制台为每个项目创建 36 个 OAuth 客户端。您最多可以使用 Google Cloud CLI 为每个项目创建 500 个 OAuth 客户端。

控制台

完成以下步骤,即可使用Google Cloud 控制台创建 OAuth 客户端。

  1. 按照设置 OAuth 权限请求页面中的说明配置 OAuth 权限请求页面。

  2. 按照设置 OAuth 2.0 中的说明创建 OAuth 客户端。

gcloud

已知限制

以下是使用 API 以编程方式创建的 OAuth 客户端的限制:

  • 由 API 创建的 OAuth 客户端只能使用 API 进行修改。如果 OAuth 客户端是使用 API 创建的,则无法使用 Google Cloud 控制台对其进行修改。
  • 由 API 创建的 OAuth 客户端仅限用于 IAP,因此该 API 不允许对重定向 URI 或其他属性进行任何更新。
  • 该 API 不适用于使用 Google Cloud 控制台创建的 OAuth 客户端。
  • 使用 API 时,每个项目仅允许 500 个 OAuth 客户端。
  • API 创建的 OAuth 同意屏幕品牌有特定限制。如需了解详情,请参阅此部分

了解品牌和品牌状态

包含用户品牌信息的 OAuth 同意屏幕称为品牌。品牌仅限内部用户或公共用户使用。内部品牌可以让与该项目属于同一 Google Workspace 组织的人员可以访问 OAuth 流程。公开品牌可以让互联网上的任何用户都能看到 OAuth 流程。

您可以使用 API 手动或以编程方式创建品牌。使用 API 创建的品牌会自动使用以下设置进行配置:

  • 内部。您必须手动将其设为公开。

  • 未审核。您必须触发品牌审核。

如需将内部品牌设置为公开,请执行以下操作:

  1. 打开 OAuth 同意屏幕
  2. 从下拉菜单中选择一个项目。
  3. OAuth 同意屏幕页面上,请注意,用户类型会自动设置为内部。如需将其设置为公开,请点击修改应用。系统会显示更多配置选项。
  4. 应用类型下,点击公开

如需对 API 创建的未经审核的品牌触发品牌审核,请执行以下操作:

  1. 打开 OAuth 同意屏幕
  2. 从下拉菜单中选择一个项目。
  3. OAuth 同意屏幕页上,输入所有必需的信息,然后点击提交以进行验证

验证流程可能需要几周时间。随着此流程的推进,您会收到电子邮件更新。详细了解验证。在执行验证流程期间,您仍然可以在 Google Workspace 组织内使用该应用。详细了解您的应用在经过验证之前的行为。

所需权限

在创建客户端之前,请确保已向调用方授予以下权限:

  • clientauthconfig.brands.list
  • clientauthconfig.brands.create
  • clientauthconfig.brands.get
  • clientauthconfig.clients.create
  • clientauthconfig.clients.listWithSecrets
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

这些权限包含在 Editor (roles/editor) 和 Owner (roles/owner) 基本角色中,但是我们建议您创建一个包含这些权限的自定义角色并将其授予调用方。

为 IAP 设置 OAuth

以下步骤介绍了如何配置同意屏幕,以及如何为 IAP 创建客户端并对其进行身份验证。

  1. 使用 list 命令检查您是否已有品牌。每个项目只能有一个品牌。

    gcloud iap oauth-brands list

    以下是 gcloud 响应示例(如果存在品牌):

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. 如果不存在品牌,请使用 create 命令:

    gcloud iap oauth-brands create --application_title=APPLICATION_TITLE --support_email=SUPPORT_EMAIL

    调用 API 时上述字段为必填字段:

    • supportEmail:OAuth 同意屏幕上显示的支持电子邮件。该电子邮件地址可以是用户的地址,也可以是 Google 群组别名。虽然服务账号也有一个电子邮件地址,但它们不是实际有效的电子邮件地址,在创建品牌时不能使用。但是,服务账号可以是 Google 群组的所有者。创建新的 Google 群组或配置现有群组,然后将所需的服务账号设置为该群组的所有者。

    • applicationTitle:OAuth 同意屏幕上显示的应用名称。

    响应包含以下字段:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    

创建 IAP OAuth 客户端

  1. 使用 create 命令可以创建客户端。使用上一步中的品牌 name

    gcloud iap oauth-clients create projects/PROJECT_NUMBER/brands/BRAND-ID --display_name=NAME

    响应包含以下字段:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]