选择身份验证方法

API Gateway 支持多种身份验证方法,这些方法适用于不同的应用和用例。API Gateway 会先使用您在服务配置中指定的身份验证方法来验证传入请求,然后再将这些请求传递给 API 后端。本页面简要介绍了 API Gateway 中每种受支持的身份验证方法。

API 密钥

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

如果您在 API 配置中指定 API 密钥要求,API Gateway 会使用 API 密钥来查找与该 API 密钥关联的 Google Cloud 项目。除非 API 密钥是在您的 Google Cloud 项目或已启用 API 的其他 Google Cloud 项目中生成的,否则 API Gateway 将拒绝请求。

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

用例

要使用配额之类的 API Gateway 功能,您可以传入 API 密钥,以便 API Gateway 可以识别与客户端应用关联的 Google Cloud 项目。

关于 API Gateway 的 API 密钥身份验证

如果您使用 API 密钥进行身份验证,则必须先为您的服务启用 API 密钥支持。输入以下命令,其中:

  • MANAGED_SERVICE_NAME 指定您在部署 API 时创建的代管式服务的名称。您可以在控制台的 API 着陆页上的 API 的“托管式服务”列中找到此名称。或者,您也可以在使用 gcloud api-gateway apis describe 命令时在 Managed service 属性中找到此名称。
  • PROJECT_ID 指定您的 Google Cloud 项目的名称。
gcloud services enable .apigateway.PROJECT_ID.cloud.goog

例如:

gcloud services enable my-api-a12bcd345e67f89g0h.apigateway.my-project.cloud.goog

服务帐号

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

用例

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