身份验证和授权使用场景

本页面列出了一些常见的身份验证和授权使用场景,以及有关如何实现每种使用场景的详细信息的链接。

如需大致了解在 Google 的身份验证,请参阅在 Google 进行身份验证

向 Google API 进行身份验证

Google API 要求每个请求都必须具有有效的访问令牌或 API 密钥。您可以通过多种方式提供这些必需的凭据,具体取决于您代码的运行位置以及 API 接受的凭据类型。

使用客户端库和应用默认凭据

我们推荐您在使用 Google API 时使用客户端库和应用默认凭据 (ADC)Application Default Credentials (ADC) 是身份验证库使用的一种策略,可根据应用环境自动查找凭据。身份验证库会将这些凭据提供给 Cloud 客户端库和 Google API 客户端库。使用 ADC 时,您的代码可以在开发或生产环境中运行,而无需更改应用向 Google Cloud 服务和 API 进行身份验证的方式。

如何设置 ADC 取决于您的代码运行位置。ADC 同时支持以服务账号身份进行身份验证以用户身份进行身份验证

通过 Google Kubernetes Engine (GKE) 进行身份验证

您可以通过 Workload Identity Federation for GKE 使 GKE 上运行的工作负载能够安全地访问 Google API。Workload Identity Federation for GKE 允许 GKE 集群中的 GKE 服务账号充当 Identity and Access Management (IAM) 服务账号。

从 Knative serving 进行身份验证

您可以使用 Workload Identity Federation for GKE 对 Knative serving 服务进行身份验证,以便可以访问 Google API。

使用接受 API 密钥的 API

API 密钥会将 API 请求与 Google Cloud 项目关联,以进行结算和配额计算。如果 API 支持 API 密钥,则 API 密钥(而不是令牌)可以随 API 请求一起提供。如需确定 API 是否支持 API 密钥,请参阅 API 的文档。

使用自签名 JSON 网络令牌 (JWT)

某些 Google API 支持自签名 JSON Web 令牌 (JWT),用以替代访问令牌。使用自签名 JWT,您可以避免向 Google 的授权服务器发出网络请求。此方法要求您创建自己的签名 JWT。如需详细了解令牌,请参阅令牌类型

使用身份验证库和软件包

如果 ADC 以及由 Cloud 客户端库或 Google API 客户端库提供的 OAuth 实现在您的环境中不可用,则可以使用身份验证库和包。

您可以使用以下身份验证库和软件包:

您还可以使用 Google 的 OAuth 2.0 端点来实现 OAuth 2.0 流程。此方法需要您更详细地了解 OAuth 2.0OpenID Connect 的工作原理。如需了解详情,请参阅针对网络服务器应用使用 OAuth 2.0

Google Cloud 服务特定使用场景

某些 Google Cloud 服务支持特定于该服务的身份验证流程。

使用签名网址提供对 Cloud Storage 资源的限时访问权限

签名网址可提供对特定 Cloud Storage 资源的限时访问权限

向 GKE Enterprise 集群进行身份验证

您可以使用 Google Cloud 身份或使用第三方身份提供方向 GKE Enterprise 集群进行身份验证:

配置使用 API Gateway 或 Cloud Endpoints 部署的 API 以进行身份验证

API Gateway 和 Cloud Endpoints 支持使用 Firebase、Google 签名的 ID 令牌、Okta、Auth0 和 JWT 进行服务到服务身份验证和用户身份验证。

如需了解详情,请参阅相关产品文档:

为 Cloud Run 或 Cloud Run functions 上托管的应用进行身份验证

Cloud Run 和 Cloud Run functions 上托管的应用需要使用 OpenID Connect (OIDC) 令牌或 ID 令牌进行身份验证。

如需了解详情,请参阅下面列出的托管服务的产品文档。如需了解获取 ID 令牌的其他方法,请参阅获取 ID 令牌。 如需详细了解 ID 令牌(包括验证 ID 令牌),请参阅 ID 令牌

Cloud Run

您可以通过多种方式设置 Cloud Run 服务,具体取决于此服务的调用方式。您可能还需要通过 Cloud Run 服务向其他服务进行身份验证,这需要使用 OIDC ID 令牌。

如需通过 Web 应用或移动应用向服务验证用户的身份,请使用 Identity Platform 或 Firebase Authentication。您还可以使用 Identity-Aware Proxy (IAP) 验证内部用户的身份

Cloud Run functions

在调用函数时,您必需对调用进行身份验证。您可以使用用户凭据或 OIDC ID 令牌完成身份验证。

对应用用户进行身份验证

您可以通过多种选项对应用的最终用户进行身份验证,具体取决于应用环境的其余部分。以下说明可帮助您了解最适合您的应用的选项。

身份验证服务 说明
Google Identity 服务

Google 身份服务包括使用 Google 账号登录、Google 的用户登录按钮以及 Identity Services API 和 SDK。Google Identity 服务基于 OAuth 2.0 和 OpenID Connect (OIDC) 协议。

如果您要创建移动应用,并且希望使用 Gmail 和 Google Workspace 账号对用户进行身份验证,则“使用 Google 账号登录”是一个适合的选项。“使用 Google 账号登录”还支持将 Google 账号与现有登录系统搭配使用。

更多信息

使用 Google 账号登录提供 Gmail 和 Google Workspace 账号登录机制并支持动态密码 (OTP)。使用 Google 账号登录针对的是仅限 Google 的账号或现有登录系统中的 Google 账号,适用于移动应用。

使用 Google 账号登录适用于 iOSAndroidWeb 应用

Firebase Authentication

Firebase Authentication 提供身份验证服务和库,可针对各种用户账号类型向应用验证用户的身份。

如果您希望接受来自多个平台的用户登录,则 Firebase Authentication 是一个适合的选择。

更多信息

Firebase Authentication 可为许多用户账号类型提供身份验证功能。Firebase Authentication 支持密码身份验证以及使用 Google、Facebook、Twitter 和其他平台联合登录。

Identity Platform 和 Firebase Authentication 均基于 Google Identity 服务。Firebase Authentication 针对的对象是消费者应用。Identity Platform 非常适合希望成为自己的身份提供方或需要 Identity Platform 提供的企业级功能的用户。如需详细了解这些产品之间的差异,请参阅 Identity Platform 与 Firebase Authentication 之间的差异

以下链接提供了更多信息:

Identity Platform

Identity Platform 是一个客户身份和访问权限管理 (CIAM) 平台,可帮助组织为其应用添加企业级身份和访问权限管理功能。

如果您要创建与 Google 身份提供方(如 Google Workspace)或者您自己的身份和访问权限管理服务搭配使用的应用,则 Identity Platform 是适合的选项。

更多信息

Identity Platform 提供可自定义的普适性身份和身份验证服务,为您处理用户注册和登录流程。Identity Platform 支持多种身份验证方法:SAML、OIDC、电子邮件地址/密码、社交媒体、电话号码和自定义选项。

Identity Platform 和 Firebase Authentication 均基于 Google Identity 服务。Firebase Authentication 针对的对象是消费者应用。Identity Platform 非常适合希望成为自己的身份提供方或需要 Identity Platform 提供的企业级功能的用户。如需详细了解这些产品之间的差异,请参阅 Identity Platform 与 Firebase Authentication 之间的差异

OAuth 2.0 和 OpenID Connect

OpenID Connect 可让您处理和使用身份验证令牌,自定义程度最高。

如果您希望最大限度地控制 OAuth 2.0 实现,并且能够熟练地实现 OAuth 2.0 流程,请考虑使用此选项。

更多信息

Google 的 OAuth 2.0 实现符合 OpenID Connect 规范,并且已通过 OpenID 认证。OpenID Connect 是以 OAuth 2.0 协议为基础构建的身份层。 您的应用可以使用 OpenID Connect 验证 ID 令牌检索用户个人资料信息

OAuth 2.0 可用于实现对 Identity-Aware Proxy 保护的资源进行程序化身份验证。

Identity-Aware Proxy (IAP)

借助 IAP,您可以在请求到达应用资源之前控制对应用的访问权限。

与此表中的其他身份验证服务(在应用内实现)不同,IAP 会先执行身份验证,然后您的应用才可供访问。

更多信息

通过 IAP,您可以为应用建立一个中央授权层,并使用签名标头来保护应用的安全。受 IAP 保护的应用只能由具有正确 IAM 角色主账号访问。如果最终用户尝试访问受 IAP 保护的资源,IAP 会为您执行身份验证和授权检查。IAP 无法针对项目内的活动提供保护,例如同一项目内的其他服务。

对于 Google 身份,IAP 会使用 ID 令牌。如需了解详情,请参阅程序化身份验证

如需了解 IAP 如何保护应用资源,请参阅 IAP 概览

以下特定于语言的教程适用于 IAP:

App Engine Users API 对于在 App Engine 标准环境中运行的应用,Users API 可用于提供针对某些语言的用户身份验证功能。
授权访问最终用户资源 如果您的应用访问最终用户拥有的资源,您必须获得最终用户对此操作的许可。此使用场景有时称为“三足式 OAuth”或“3LO”,因为涉及到三个实体:应用、授权服务器和用户。

Google Cloud 和 Google Workspace 的身份验证和授权选项

Google Cloud 和 Google Workspace 提供了各种用于设置访问权限、增强账号安全性和管理账号的选项。

为外部工作负载授予对 Google Cloud 资源的访问权限

借助工作负载身份联合,您可以授予本地或多云端工作负载对 Google Cloud 资源的访问权限。过去,此使用场景需要使用服务账号密钥,但工作负载身份联合避免了使用服务账号密钥的维护和安全负担。工作负载身份联合支持与 OIDC 兼容或与 SAML 2.0 兼容的身份提供方

设置身份提供方

您可以通过 Cloud Identity 或 Google Workspace 将 Google 用作身份提供方。您还可以将 Cloud Identity 或 Google Workspace 账号与外部身份提供方联合。这种方法使用 SAML,使员工能够使用其现有身份和凭据登录 Google 服务。

设置双重验证

要求双重验证是最佳实践,有助于防止不法分子在获取账号凭据后访问该账号。使用双重验证时,要求用户提供第二重信息或标识,然后再对用户进行身份验证。Google 提供了多种支持 FIDO (Fast IDentity Online) 标准的解决方案。

Identity Platform 支持将双重验证用于 WebiOSAndroid 应用。

Google Identity 服务支持 FIDO (Fast IDentity Online) 身份验证

Google 支持将各种硬件解决方案用于双重验证,例如 Titan 密钥

设置基于证书的访问权限

作为 Chrome Enterprise 进阶版零信任解决方案的一部分提供的基于证书的访问权限可通过其 X.509 证书标识设备,以仅向可信设备上经过身份验证的用户授予访问权限。基于证书的访问权限有时也称为双向传输层安全协议 (mTLS)。

常规账号和身份验证信息

获取有关访问 Google 账号的帮助

如果您需要有关访问或管理 Google 账号的帮助,请参阅 Google 账号支持页面

处理被破解的凭据

如果您认为自己的凭据已被破解,您或您的管理员可以采取相关措施来缓解这种情况。如需了解详情,请参阅处理被破解的 Google Cloud 凭据

获得证书授权机构问题方面的帮助

如果您看到与证书或证书授权机构 (CA)(包括根 CA)的问题相关的错误,请参阅 Google Trust Services 常见问题解答以了解详情。