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