我的用例
我在Google Cloud平台上部署了一个API,使用Google Cloud Endpoint作为API管理器。对于那些熟悉端点的人,我使用的是GKE上的ESP。我的API作为部署在Google的Actions上的action的webhook。在API端,我需要验证请求是否确实来自Google上的操作。
正如the doc中所述,来自Google上的操作的请求在Authorization头中包含一个令牌(JWT格式
authorization: "<JWT token>"因此,我需要使用云端点验证此令牌。
问题所在
云端点使用Swager2.0(也称为OpenAPI ),specification只提到了以下安全方案:"basic“、"apiKey”或"oauth2“。看起来谷歌使用的操作并不是基于其中的一个。
我尝试过的
我尝试使用以下OpenAPI定义将JWT视为OAuth2令牌:
securityDefinitions:
ActionsOnGoogle:
authorizationUrl: ""
type: "oauth2"
flow: "implicit"
x-google-issuer: "https://accounts.google.com"
x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs"
audiences: "{{ my-gcp-project-id }}"它不起作用,因为Cloud Endpoints ESP会检查Authorization header的值是否以“header”开头,否则它会拒绝请求(code)
我的第二个选择是将Authorization头中的JWT视为API密钥。但是云端点只支持由GCP管理的API密钥。
我的问题
是否可以使用Google Cloud Endpoint验证来自Google上的操作的请求?
发布于 2019-07-23 06:44:39
抱歉,ESP目前不支持从该格式提取JWT:
authorization: "<JWT token>"https://stackoverflow.com/questions/57145885
复制相似问题