Cloud OAuth API 概览

Cloud OAuth API (cloudoauth.googleapis.com) 为员工身份联合提供 OAuth 2.0 和 OpenID Connect (OIDC) 令牌交换和身份验证。

Cloud OAuth API 用于对 Google Cloud 用户进行身份验证。借助此 API,您的应用可以将用户重定向到授权端点 (https://auth.cloud.google/authorize) 以获取授权代码。然后,您的应用可以将外部凭据、授权代码或刷新令牌交换为短期有效的 OAuth 2.0 访问令牌和 OIDC ID 令牌。

该 API 基于 OAuth 2.0 令牌交换 (RFC 8693) 和 OAuth 2.0 授权框架 (RFC 6749) 规范。

与 Security Token Service 的比较

过去, Google Cloud的 Security Token Service (sts.googleapis.com) 会同时处理员工身份联合和工作负载身份联合的令牌交换。

Cloud OAuth API 支持与 Security Token Service 相同的令牌交换,但专用于员工身份联合流量。这种分离可将员工令牌交换与工作负载流量隔离开来,这有助于防止跨服务中断,并使员工容量能够独立于 Security Token Service 进行扩缩。根据您的集成状态,请遵循以下准则:

  • 新集成:将用户重定向到授权端点 (https://auth.cloud.google/authorize),并使用 Cloud OAuth API (cloudoauth.googleapis.com) 交换令牌。
  • 现有集成:如果您使用 Security Token Service(sts.googleapis.com/v1/oauthtoken 或 sts.googleapis.com/v1/token),请过渡到 cloudoauth.googleapis.com。

支持的端点

下表列出了您在 Cloud OAuth API 集成中使用的端点。这些端点大多是组织级(单租户)端点,当您的客户端应用和资源仅限于单个 Google Cloud组织时,这些端点可提供隔离的密钥管理和发现功能。

在组织级端点网址中,将 ORGANIZATION_ID 替换为您的数字 Google Cloud组织 ID:

端点 方法 网址 说明
OpenID Connect 发现 GET https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration 返回组织的 OpenID Connect Discovery 1.0 提供方配置元数据(发现文档)。
授权 GET https://auth.cloud.google/authorize 将联合用户重定向到其身份提供方 (IdP) 进行登录,并向应用的重定向 URI 返回授权代码。
令牌交换 POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token 将授权代码或刷新令牌交换为 OAuth 2.0 访问令牌和 OIDC ID 令牌。
JSON Web 密钥集 (JWKS) GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json 返回用于验证为组织签发的 OIDC ID 令牌签名的公共 JSON Web 密钥 (JWK)。
用户信息 GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo 检索经过身份验证的用户的 OIDC 标准声明、自定义目录声明和群组成员资格。
企业群组 GET https://cloudoauth.googleapis.com/v1/common/groups 检索经过身份验证的用户的分页企业群组成员资格。

授权端点

在 OAuth 2.0 和 OIDC 授权代码流程中,您的应用会将联合用户重定向到 Google Cloud的统一授权端点 (https://auth.cloud.google/authorize),以便用户使用其 IdP 登录。身份验证成功后,授权端点会将用户重定向到应用的重定向 URI,并附带授权代码。然后,您的应用会在令牌交换端点将此代码换成令牌。

OIDC 发现和 JWKS 端点

对于 Looker OIDC 集成,Cloud OAuth API 提供公开、未经身份验证的组织级端点,用于客户端配置和令牌验证:

  • OpenID Connect 发现端点:为组织提供 OpenID Connect Discovery 1.0 提供方配置元数据(发现文档)。发现文档包含组织的 issuer 标识符和端点网址(authorization_endpoint、token_endpoint、userinfo_endpoint 和 jwks_uri)。它还列出了支持的范围、声明、签名算法 (RS256) 和用于代码交换的证明密钥 (PKCE) 代码质询方法 (S256)。
  • JSON Web 密钥集 (JWKS) 端点:为组织提供公共 JSON Web 密钥集 (JWKS)。应用使用 keys 数组中的公共 JSON Web 密钥 (JWK) 来验证 Cloud OAuth API 颁发的 OIDC ID 令牌 (id_token) 的加密签名。

在典型的 OIDC 集成中,您的应用会按以下顺序使用这些端点:

  1. 提取发现文档:向 OpenID Connect 发现端点 (/.well-known/openid-configuration) 发送 GET 请求,并读取端点网址(authorization_endpoint、token_endpoint、jwks_uri 和 userinfo_endpoint)。
  2. 请求授权代码:将用户重定向到 authorization_endpoint (https://auth.cloud.google/authorize),以便使用其 IdP 登录,并在应用的重定向 URI 处接收授权代码。
  3. 用授权代码换取令牌:向 token_endpoint (/token) 发送 POST 请求,用授权代码换取 OAuth 2.0 访问令牌和 OIDC ID 令牌 (id_token)。
  4. 验证 ID 令牌:从 jwks_uri (/.well-known/jwks.json) 提取组织的公钥,并使用这些公钥验证 id_token 的加密签名。
  5. 可选:检索用户信息:向 userinfo_endpoint (/userinfo) 发送包含访问令牌的 GET 请求,以检索其他用户个人资料声明和群组成员资格。

后续步骤