多重身份验证 "OR" 在 Google Cloud Endpoints OpenAPI 中不起作用
Multiple Authentication "OR" not working in Google Cloud Endpoints OpenAPI
在 Google Cloud Endpoints 中,我无法在 "or" 场景中进行身份验证,例如,我想允许通过 api_key "or" oauth。请参阅 https://swagger.io/docs/specification/2-0/authentication/ 了解更多信息。
有效(API 键的单一定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- api_key: []
有效(oauth 的单一定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
有效("AND" 两者都必须包含在 auth 中的定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
api_key: []
不起作用("OR" 定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
- api_key: []
更具体地说,在将我的 api 部署到 Google Cloud Endpoints 时,我收到以下警告
Operation 'get' in path '/api/query': Operation does not require an API key; callers may invoke the method without specifying an associated API-consuming project.
并且,当尝试使用 API 密钥调用 api 时,我收到以下错误,就好像它在期待 OAUTH JWT 令牌(可能是因为它是第一个安全定义在该路线的列表中)
{ "code": 16, "message": "JWT validation failed: Missing or invalid credentials", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "stackEntries": [], "detail": "auth" } ]}'
很遗憾,此功能不受支持。您只能使用 AND。这现在记录在 Unsupported OpenAPI Features.
中
在 Google Cloud Endpoints 中,我无法在 "or" 场景中进行身份验证,例如,我想允许通过 api_key "or" oauth。请参阅 https://swagger.io/docs/specification/2-0/authentication/ 了解更多信息。
有效(API 键的单一定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- api_key: []
有效(oauth 的单一定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
有效("AND" 两者都必须包含在 auth 中的定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
api_key: []
不起作用("OR" 定义)
/api/query:
get:
operationId: queryget
responses:
'200':
description: query success
security:
- oauth: []
- api_key: []
更具体地说,在将我的 api 部署到 Google Cloud Endpoints 时,我收到以下警告
Operation 'get' in path '/api/query': Operation does not require an API key; callers may invoke the method without specifying an associated API-consuming project.
并且,当尝试使用 API 密钥调用 api 时,我收到以下错误,就好像它在期待 OAUTH JWT 令牌(可能是因为它是第一个安全定义在该路线的列表中)
{ "code": 16, "message": "JWT validation failed: Missing or invalid credentials", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "stackEntries": [], "detail": "auth" } ]}'
很遗憾,此功能不受支持。您只能使用 AND。这现在记录在 Unsupported OpenAPI Features.
中