多重身份验证 "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.