Как использовать Cookies в Редакторе Swagger

Я хотел бы документировать и тестировать API, который использует аутентификацию на основе файлов Cookie в http://editor.swagger.io/. Чтобы дать простой пример: как написать в следующем YAML, что /login действие создает Cookie и Cookie должен быть передан в /showMySecretStuff?

swagger: '2.0'
info:
  title: Test API
  version: '1'
host: my.test.com
schemes:
  - https
basePath: /
consumes:
  - multipart/form-data
produces:
  - application/json
paths:
  /login:
    post:
      parameters:
        - name: username
          in: formData
          required: true
          type: string
        - name: password
          in: formData
          required: true
          type: string
          default: secret
      responses:
        200:
          description: OK
  /showMySecretStuff:
    get:
      responses:
        200:
          description: OK

1 ответов


аутентификация Cookie поддерживается в OpenAPI 3.0, но не в OpenAPI / Swagger 2.0.

в OpenAPI 3.0 аутентификация cookie определяется как ключ API, который отправляется in: cookie:

openapi: 3.0.1
...

components:
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: COOKIE-NAME  # replace with your cookie name

paths:
  /showMySecretStuff:
    get:
      security:
        - cookieAuth: []
      responses:
        '200':
          description: OK

операция входа в систему не связана с securitySchemes в любом случае, но вы можете определить заголовок ответ Set-Cookie в целях документирования:

paths:
  /login:
    post:
      requestBody:
        ...
      responses:
        '200':
          description: OK
          headers:
            Set-Cookie:
              description: >
                Contains the session cookie named `COOKIE-NAME`.
                Pass this cookie back in subsequent requests.
              schema: 
                type: string

тем не менее, Swagger Editor и Swagger UI в настоящее время не поддерживают аутентификацию cookie. Проверьте отставание поддержки OAS 3.0 и этот вопрос для обновления.

файл cookie проверки подлинности, поддерживаемые в SwaggerHub хотя. (раскрытие: SwaggerHub является продуктом компании я работаю.)