google-cloud-endpoints - 如何使用 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"
这就是我对流程的理解:
- API 使用者在标头中发送带有 JWT 令牌的请求
- ESP 使用
authorizationUrl
- 请求被转发或 ESP 返回错误。
我的问题:
- 上面的流程正确吗?
应该如何
authorizationUrl
实施。请求看起来如何,成功或失败时应该返回什么响应这个值呢?x-google-issuer:“令牌发行者” x-google-jwks_uri:“公钥的 URL” x-google-audiences:“YOUR-CLIENT-ID”
解决方案
为端点配置自定义身份验证
要为端点配置自定义身份验证(并根据 OpenAPI v2 规范),您需要两个部分:
Google Cloud Endpoints 文档在此处对此进行了描述。
OpenAPI 规范的安全定义
OpenAPI 规范的 SecurityDefinitions 部分中的一些字段用于 API 生产者,而一些字段用于 API 消费者。
以下字段用于API 生产者,并告诉端点如何验证伴随 API 请求的访问令牌:
- 类型:“oauth2”
- x-google-issuer:“令牌的发行者”
- x-google-jwks_uri:“公钥的 URL”
- x-google-audiences:“您的客户 ID”
这些字段由 API 生产者指定,并告诉消费者如何获取有效的访问令牌:
- 授权网址
- 流动
回复:你的问题
- 正确的。这是有关消费者应如何随请求发送访问令牌的文档
- ESP 使用规范属性中指定的公钥验证访问令牌,
x-google-jwks_uri
并确保令牌的颁发者与 securityDefinitionx-google-issuer
字段中指定的颁发者匹配。 - 正确的。
关于您的问题,authorizationUrl
应该由您正在使用的 OAuth2 提供商设置。该 url 应该允许消费者执行隐式 OAuth2 流以获取访问令牌。您需要做的就是指定这个
推荐阅读
- java - 使用递归显示数字的所有数字时无法打印数字的最后一位?
- javascript - 使用 document.querySelectorAll 时出错?
- python - Python:按值或键对字典进行排序并将结果子集到前三个键值对
- python - 为什么我从 random.choice 属性中得到一个错误,但我不使用选择?
- python - How to scrape a specific data with BeautifulSoup
- c# - await 是否立即将执行返回到主线程?
- reactjs - 处理文本的首选方式?排版 vs 盒子 vs div/span
- python - 引用另一个目录中的 python 函数
- angular - Angular中的故障重定向
- ruby - 创建一组数组