不是有效的securityDefinitions定义 - 对于Auth0的swagger

时间:2016-10-24 18:34:20

标签: swagger swagger-2.0 swagger-editor

我有以下spec.yaml文件

swagger: '2.0'
info:
  title: Store API
  version: "0.3.5"
host: SELF_URL_REPLACED_BY_APP
schemes:
  - https
basePath: /
produces:
  - application/json
tags:
  - name: account
  - name: transcripts
security:
  - auth0:
    - openid
  - apiKey: []
securityDefinitions:
  auth0:
    type: oauth2
    authorizationUrl: https://store.auth0.com/authorize
    flow: implicit
    tokenName: id_token
    scopes:
      openid: Grant access to user
  apiKey:
    type: apiKey
    name: Authorization
    in: header

当我尝试在http://editor.swagger.io/中验证时出现此错误:

✖ Swagger Error
Not a valid securityDefinitions definition
Jump to line 19
Details
 Object
code:  "ONE_OF_MISSING"
 params: Array [0]
message:  "Not a valid securityDefinitions definition"
 path: Array [2]
schemaId:  "http://swagger.io/v2/schema.json#"
 inner: Array [6]
level: 900
type:  "Swagger Error"
description:  "Not a valid securityDefinitions definition"
lineNumber: 19

我错过了什么?我能够使用Auth0登录,一切似乎都正常。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

tokenName不是SecurityDefinitions对象的有效属性。

但是,您的Swagger定义还有其他错误 - 例如没有paths - 这可能会导致它在您编辑时提供有关securityDefinitions的错误验证错误。

以下例如应该验证罚款:

swagger: '2.0'
info:
  title: Store API
  version: "0.3.5"
host: SELF_URL_REPLACED_BY_APP
schemes:
  - https
basePath: /
produces:
  - application/json
tags:
  - name: account
  - name: transcripts
paths:
  /pets:
    get:
      description: Returns all pets from the system that the user has access to
      produces:
      - application/json
      responses:
        '200':
          description: A list of pets.
          schema:
            type: array
            items:
              type: string
      security:
        - auth0: 
          - openid
        - apiKey: []
securityDefinitions:
  auth0:
    type: oauth2
    authorizationUrl: https://store.auth0.com/authorize
    flow: implicit
    scopes:
      openid: Grant access to user
  apiKey:
    type: apiKey
    name: Authorization
    in: header

security部分也不属于顶层,但应放在每个API方法下(参见上面的示例定义),以指定应将哪些安全定义应用于该API。

相关问题