选择身份验证方法

Cloud Endpoints 支持多种身份验证方法,这些方法适用于不同的应用和使用场景。Extensible Service Proxy (ESP) 会先使用您在服务配置中指定的身份验证方法来验证传入请求,然后再将这些请求传递给 API 后端。本文档简要介绍了每种受支持的身份验证方法,并提供了相应的使用场景示例。

API 密钥

API 密钥是一个简单的加密字符串,用于标识 Google Cloud 项目,以实现配额、结算和监控的目的。开发者在 Google Cloud 控制台中为项目生成一个 API 密钥,并将该密钥作为查询参数嵌入到对 API 的每次调用中。

如果在服务配置中指定 API 密钥要求,ESP 将使用 API 密钥来查找与该 API 密钥关联的 Google Cloud 项目。除非 API 密钥是在您的 Google Cloud 项目或已启用 API 的其他 Google Cloud 项目中生成,否则 ESP 将拒绝请求。如需了解详情,请参阅使用 API 密钥限制 API 访问权限

与使用短期令牌或签名请求的凭据不同,API 密钥属于请求的一部分,因而被认为容易遭受中间人攻击、安全性较低。除了 API 密钥外,您还可以使用下文所述的任一种身份验证方法。出于安全原因,如果 API 调用包含用户数据,请不要单独使用 API 密钥。

用例

如果您想要使用 Endpoints 的配额等功能,则每个请求都必须传入 API 密钥,以便 Endpoints 能够识别与客户端应用关联的 Google Cloud 项目。

如需详细了解 API 密钥,请参阅为何及何时使用 API 密钥

Firebase 身份验证

Firebase 身份验证提供了用于向移动应用或 Web 应用验证用户身份的后端服务、SDK 和库。此功能使用各种凭据(如 Google、Facebook、Twitter 或 GitHub)对用户进行身份验证。

用户成功登录后,Firebase 客户端库会使用私钥对 JSON 网络令牌 (JWT) 进行签名。ESP 会验证 JWT 是否已由 Firebase 签名,并且 JWT 中的 iss (issuer) 声明(用于标识您的 Firebase 应用)是否与服务配置中的 x-google-issuer 设置相匹配。

用例

如果 API 调用涉及任何用户数据,并且该 API 将要用在为用户提供界面的流程中(例如,移动应用和 Web 应用中的流程),则我们建议使用 Firebase。 如需了解详情,请参阅使用 Firebase 对用户进行身份验证

Auth0

无论身份提供商、平台、堆栈和设备如何,Auth0 都会对应用和 API 进行身份验证和授权。

Auth0 支持大量提供商服务,以及安全断言标记语言规范。该方法提供了用于在网页应用和移动应用中对用户进行身份验证的后端服务、SDK 和界面库。Auth0 可与多个第三方身份提供商集成,还可提供自定义用户账号管理功能。

用户登录后,由 Auth0 提供的客户端库会生成 JWT 并进行签名。ESP 会验证 JWT 是否已由 Auth0 签名,并且 JWT 中的 iss 声明(用于标识您的 Auth0 应用)是否与服务配置中的 x-google-issuer 设置相匹配。

用例

Auth0 适合面向消费者和企业的网页应用及移动应用。如需了解详情,请参阅“Auth0”标签页 如需了解详情,请参阅使用 Auth0 对用户进行身份验证

Google ID 令牌身份验证

使用 Google ID 令牌进行身份验证时,用户可以通过使用 Google 账号登录来执行身份验证。通过身份验证后,用户可以访问所有 Google 服务。您可以使用 Google ID 令牌调用 Google API 和 Endpoints 管理的 API。ESP 会使用公钥验证 Google ID 令牌,并确保 JWT 中的 iss 声明为 https://accounts.google.com

用例

如果所有用户都有 Google 账号,建议使用 Google ID 令牌进行身份验证。例如,如果您的 API 随 Google 应用(如 Google 云端硬盘配套应用)一起提供,您可以选择使用 Google ID 令牌身份验证。 采用 Google ID 令牌身份验证时,用户可以使用 Google 账号登录以执行身份验证。通过身份验证后,用户可以访问所有 Google 服务。 如需了解详情,请参阅使用 Google ID 令牌对用户进行身份验证

服务账号

要识别向您的 API 发送请求的服务,请使用服务账号。调用服务会使用服务账号的私钥来签署安全的 JSON Web 令牌 (JWT),并将已签名的 JWT 随请求发送到您的 API。

用例

JWT 和服务账号非常适合微服务。如需了解详情,请参阅服务之间的身份验证

自定义身份验证

您可以使用其他身份验证平台来对用户进行身份验证,只要该平台符合 JSON 网络令牌 RFC 7519 即可。

如需了解详情,请参阅使用自定义方法对用户进行身份验证