首页 > 解决方案 > 如何使用 Google Cloud Endpoints 设置自定义用户身份验证

问题描述

我正在尝试了解如何将 Cloud Endpoints 与自定义身份验证一起使用。从文档中我了解到它从以下内容开始securityDefinitions

securityDefinitions:
    your_custom_auth_id:
      authorizationUrl: ""
      flow: "implicit"
      type: "oauth2"
      # The value below should be unique
      x-google-issuer: "issuer of the token"
      x-google-jwks_uri: "url to the public key"
      # Optional. Replace YOUR-CLIENT-ID with your client ID
      x-google-audiences: "YOUR-CLIENT-ID"

这就是我对流程的理解:

  1. API 使用者在标头中发送带有 JWT 令牌的请求
  2. ESP 使用authorizationUrl
  3. 请求被转发或 ESP 返回错误。

我的问题:

标签: google-cloud-endpoints

解决方案


为端点配置自定义身份验证

要为端点配置自定义身份验证(并根据 OpenAPI v2 规范),您需要两个部分:

  1. securityDefinitions在规范部分定义您的自定义身份验证方案
  2. 将您的自定义身份验证方案(在 #1 中定义)应用于整个 api或使用该字段的特定操作。security

Google Cloud Endpoints 文档在此处对此进行了描述。

OpenAPI 规范的安全定义

OpenAPI 规范的 SecurityDefinitions 部分中的一些字段用于 API 生产者,而一些字段用于 API 消费者。

以下字段用于API 生产者,并告诉端点如何验证伴随 API 请求的访问令牌:

  • 类型:“oauth2”
  • x-google-issuer:“令牌的发行者”
  • x-google-jwks_uri:“公钥的 URL”
  • x-google-audiences:“您的客户 ID”

这些字段由 API 生产者指定,并告诉消费者如何获取有效的访问令牌:

  • 授权网址
  • 流动

回复:你的问题

  1. 正确的。这是有关消费者应如何随请求发送访问令牌的文档
  2. ESP 使用规范属性中指定的公钥验证访问令牌,x-google-jwks_uri并确保令牌的颁发者与 securityDefinitionx-google-issuer字段中指定的颁发者匹配。
  3. 正确的。

关于您的问题,authorizationUrl应该由您正在使用的 OAuth2 提供商设置。该 url 应该允许消费者执行隐式 OAuth2 流以获取访问令牌。您需要做的就是指定这个


推荐阅读