Cloud Endpoints Frameworks 支持多种身份验证方法,这些方法适用于不同的应用和使用场景。Endpoints Frameworks 使用您在注解中指定的身份验证方法验证传入请求,然后将这些请求传递给 API 后端。本文档概括介绍了每种支持的身份验证方法,并提供了相应的使用场景示例。
API 密钥
API 密钥是一个简单的加密字符串,用于标识 Google Cloud 项目,以实现配额、结算和监控的目的。开发者在 Google Cloud 控制台中的项目中生成 API 密钥,并将该密钥以查询参数的形式嵌入到对 API 的每次调用中。
如果您在注解中指定 API 密钥要求,Endpoints Frameworks 会使用 API 密钥来查找与该 API 密钥关联的 Google Cloud 项目。除非 API 密钥是在您的 Google Cloud 项目或已启用 API 的其他 Google Cloud 项目中生成,否则 Endpoints Frameworks 将拒绝请求。如需了解详情,请参阅使用 API 密钥限制 API 访问权限
与使用短期令牌或签名请求并在请求标头中发送的凭据不同,客户端会将 API 密钥作为查询参数发送。即使查询参数在 HTTPS 中加密,API 密钥也不安全。例如,某些服务器可能会在服务器日志中以明文形式存储每个请求的完整网址。出于安全原因,如果 API 调用包含用户数据,请不要单独使用 API 密钥。除了以下某种身份验证方法之外,您还可以使用 API 密钥。
如需了解有关保护 API 密钥和为其添加限制的最佳做法,请参阅使用 API 密钥。虽然“使用 API 密钥”针对的是使用 Google API 的客户,但最佳做法适用于使用“Endpoints Frameworks”创建的 API。
使用场景
如果您想要使用 Endpoints 的quotas等功能,则每个请求都必须传入 API 密钥,以便 Endpoints 能够识别与客户端应用关联的 Google Cloud 项目。
如需详细了解 API 密钥,请参阅为何及何时使用 API 密钥。
Firebase 身份验证
Firebase 身份验证提供了用于向移动应用或 Web 应用验证用户身份的后端服务、SDK 和库。此功能使用各种凭据(如 Google、Facebook、Twitter 或 GitHub)对用户进行身份验证。
用户成功登录后,Firebase 客户端库会使用私钥对 JSON 网络令牌 (JWT) 进行签名。Endpoints Frameworks 会验证 JWT 是否已由 Firebase 签名,并且 JWT 中的“iss”(颁发者)声明(用于标识您的 Firebase 应用)是否与注解中的 issuer
设置相匹配。
用例
由于 Firebase 身份验证与其他 Firebase 服务紧密集成,因此非常适合使用 Firebase 的移动应用或网站应用。请参阅使用 Firebase 身份验证进行身份验证。
Auth0
无论身份提供商、平台、堆栈和设备如何,Auth0 都会对应用和 API 进行身份验证和授权。
Auth0 支持大量提供商服务,以及安全断言标记语言规范。该方法提供了用于在网页应用和移动应用中对用户进行身份验证的后端服务、SDK 和界面库。Auth0 可与多个第三方身份提供商集成,还可提供自定义用户账号管理功能。
用户登录后,由 Auth0 提供的客户端库会生成 JWT 并进行签名。Endpoints Frameworks 会验证 JWT 是否已由 Auth0 签名,并且 JWT 中的“iss”声明(用于标识您的 Auth0 应用)是否与注解中的 issuer
设置相匹配。
用例
Auth0 非常适合面向消费者和企业的网页应用及移动应用。如需了解详情,请参阅使用 Auth0 进行身份验证。
Google ID 令牌身份验证
使用 Google ID 令牌进行身份验证时,用户可以通过使用 Google 账号登录来执行身份验证。通过身份验证后,用户可以访问所有 Google 服务。您可以使用 Google ID 令牌调用 Google API 和您使用 Endpoints Frameworks 实现的 API。Endpoints Frameworks 会使用公钥验证 Google ID 令牌,并确保 JWT 中的“iss”声明为 https://accounts.google.com
或 accounts.google.com
。
使用场景
如果所有用户都有 Google 账号,建议使用 Google ID 令牌进行身份验证。例如,如果您的 API 随 Google Workspace 应用(如 Google 云端硬盘配套应用)一起提供,您可以选择使用 Google ID 令牌身份验证。采用 Google ID 令牌身份验证,用户可以使用 Google 账号登录以执行身份验证。通过身份验证后,用户可以访问所有 Google 服务。
如需了解详情,请参阅使用 Google ID 令牌进行身份验证。
JWT 和服务账号
JSON 网络令牌 (JWT) 通常用于在连接的应用之间共享声明或断言。代表服务账号的 JWT 可以通过以下任一方式进行签名:
服务账号。
Google 的授权服务。(由 Google 授权服务签名的 JWT 称为 Google ID 令牌。)
使用由服务账号签名的 JWT 对请求进行身份验证可能更容易实现,但如果您有大量服务账号,或者您希望接受来自不属于您的服务账号的凭据,则建议使用 Google ID 令牌,因为您只需要允许 https://accounts.google.com
或 accounts.google.com
作为所有服务账号的颁发者即可。
用例
JWT 和服务账号非常适合微服务。如需了解更多信息,请参阅使用服务账号进行身份验证。