使用 Google 云端点的非 OAuth2 JWT 验证
Non-OAuth2 JWT validation with Google Cloud Endpoints
我的use-case
我在 Google Cloud Platform 上部署了一个 API,Google Cloud Endpoints 作为 API 管理器。对于那些熟悉 Endpoints 的人,我使用的是 ESP on GKE。我的 API 用作部署在 Actions On Google 上的操作的 webhook。在 API 端,我需要验证请求实际上来自 Google 上的操作。
如 the doc 所述,来自 Actions On Google 的请求在授权 header
中包含令牌(JWT 格式)
authorization: "<JWT token>"
所以我需要使用 Cloud Endpoints 验证此令牌。
问题
Cloud Endpoints 使用 OpenAPI 2.0(又名 Swagger),specification 仅提及以下安全方案:"basic"、"apiKey" 或 "oauth2" . Google 使用的 Actions 似乎不是基于其中之一。
我试过的
我尝试使用以下 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 检查授权 header 的值是否以 "Bearer" 开头,否则它会拒绝请求 (code)
我的第二个选择是将授权 header 中的 JWT 视为 API 密钥。但 Cloud Endpoints 仅支持 API 由 GCP 管理的密钥。
我的问题
是否可以使用 Google Cloud Endpoints 验证来自 Actions On Google 的请求?
抱歉,目前 ESP 不支持从这种格式中提取 JWT:
authorization: "<JWT token>"
我的use-case
我在 Google Cloud Platform 上部署了一个 API,Google Cloud Endpoints 作为 API 管理器。对于那些熟悉 Endpoints 的人,我使用的是 ESP on GKE。我的 API 用作部署在 Actions On Google 上的操作的 webhook。在 API 端,我需要验证请求实际上来自 Google 上的操作。
如 the doc 所述,来自 Actions On Google 的请求在授权 header
中包含令牌(JWT 格式)authorization: "<JWT token>"
所以我需要使用 Cloud Endpoints 验证此令牌。
问题
Cloud Endpoints 使用 OpenAPI 2.0(又名 Swagger),specification 仅提及以下安全方案:"basic"、"apiKey" 或 "oauth2" . Google 使用的 Actions 似乎不是基于其中之一。
我试过的
我尝试使用以下 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 检查授权 header 的值是否以 "Bearer" 开头,否则它会拒绝请求 (code)
我的第二个选择是将授权 header 中的 JWT 视为 API 密钥。但 Cloud Endpoints 仅支持 API 由 GCP 管理的密钥。
我的问题
是否可以使用 Google Cloud Endpoints 验证来自 Actions On Google 的请求?
抱歉,目前 ESP 不支持从这种格式中提取 JWT:
authorization: "<JWT token>"