以编程方式为 IAP 创建 OAuth 客户端

本页介绍如何以编程方式创建用于 IAP 的 OAuth 客户端,使您能够以编程方式端到端为内部应用设置 IAP。

已知限制

以编程方式创建的 OAuth 客户端存在一些限制 使用此 API:

  • 由 API 创建的 OAuth 客户端只能使用 API 进行修改。您 如果 OAuth 客户端已创建,则无法通过 Google Cloud 控制台修改该客户端 使用 API
  • 由 API 创建的 OAuth 客户端会锁定为仅用于 IAP,因此该 API 不允许对重定向 URI 或其他属性进行任何更新。
  • API 不对使用 Google Cloud 控制台
  • 使用 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(仅当要列出具有密钥的 OAuth 客户端时才需要。)
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

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

为 IAP 设置 OAuth

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

  1. Check if you already have an existing brand by using the list command. You may only have one brand per project.

    gcloud iap oauth-brands list

    The following is an example gcloud response, if the brand exists:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. If no brand exists, use the create command:

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

    The above fields are required when calling this API:

    • supportEmail: The support email displayed on the OAuth consent screen. This email address can either be a user's address or a Google Groups alias. While service accounts also have an email address, they are not actual valid email addresses, and cannot be used when creating a brand. However, a service account can be the owner of a Google Group. Either create a new Google Group or configure an existing group and set the desired service account as an owner of the group.

    • applicationTitle: The application name displayed on OAuth consent screen.

    The response contains the following fields:

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

Creating an IAP OAuth Client

  1. Use the create command to create a client. Use the brand name from previous step.

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

    The response contains the following fields:

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

使用客户端 ID(在上例中为 client_id)和 secret 启用 IAP。如需详细了解如何使用您刚刚创建的凭据启用 IAP,请参阅以下主题: