如何使用 Google Cloud Endpoints 设置自定义用户身份验证

zna*_*nat 5 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"
Run Code Online (Sandbox Code Playgroud)

这就是我对流程的理解:

  1. API 使用者发送标头中带有 JWT 令牌的请求
  2. ESP 使用以下方法验证此令牌authorizationUrl
  3. 请求被转发或 ESP 返回错误。

我的问题:

  • 上面的流程正确吗?
  • 应该如何authorizationUrl实施。请求看起来如何,成功或失败时应返回什么响应

  • 这个值呢?x-google-issuer:“令牌的发行者” x-google-jwks_uri:“公钥的网址” x-google-audiences:“您的客户端ID”

lkg*_*son 2

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

要为端点配置自定义身份验证(并根据 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:“公钥的网址”
  • x-google-audiences:“您的客户 ID”

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

  • 授权网址
  • 流动

回复:您的问题

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

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