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

时间:2018-09-26 22:28:46

标签: 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. 验证此令牌
  4. 请求已转发或ESP返回错误。

我的问题:

  • 以上流程正确吗?
  • 如何实现authorizationUrl。请求的外观,成功或失败时应返回什么响应

  • 该值如何?   x-google-issuer:“令牌的发布者”   x-google-jwks_uri:“公开密钥的网址”   x-google-audiences:“您的客户ID”

1 个答案:

答案 0 :(得分:1)

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

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

  1. 在规范的securityDefinitions部分中定义您的自定义身份验证方案
  2. 使用security字段将您的自定义身份验证方案(在#1中定义)应用于entire apispecific operations

Google Cloud Endpoints文档描述了此here

OpenAPI规范的安全性定义

OpenAPI规范的SecurityDefinitions部分中的某些字段用于API生产者,某些字段用于API使用者。

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

  • 类型:“ oauth2”
  • x-google-issuer:“令牌的发布者”
  • x-google-jwks_uri:“公开密钥的网址”
  • x-google-audiences:“您的客户ID”

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

  • authorizationUrl
  • 流量

Re:您的问题

  1. 正确。这是documentation on how the consumer should send the access token with the request
  2. ESP使用规范的x-google-jwks_uri属性中指定的公钥来验证访问令牌,并确保令牌的颁发者与securityDefinition的x-google-issuer字段中指定的颁发者相匹配。
  3. 正确。

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