Search code examples
swagger

Swagger - Adding multiple security parameters to the same schema definition


Aim

To include multiple security headers to every request made within the API

Problem

I am trying to add multiple headers to my Swagger YAML security definitions. I have trawled though the API but not have alot of luck But am finding that when making the 'Try-This-Operation' I am required to select one. Rather than able to use both. Is this correct or am I doing something incorrectly?

Snippet

securityDefinitions:
  userEmail:
    type: apiKey
    name: User Email
    in: header
  clientId:
    type: apiKey
    name: Client Id
    in: header

security: [ { userEmail: [], clientId: []  } ]

Alternative?

If I am trying to do this impossible ... Is it possible to specify these parameters as default for all the rest paths within the swagger document?

I am new to Swagger this week any have found everything else without problem ... but I cannot find any good example of this.

If any guidance could be given that would be incredibly helpful Many thanks


Solution

  • OAS 3: https://swagger.io/docs/specification/authentication/

    Using Multiple Authentication Types

    Some REST APIs support several authentication types. The security section lets you combine the security requirements using logical OR and AND to achieve the desired result. security uses the following logic:

    security:    # A OR B
     - A: []
     - B: []
    
    security:    # A AND B
     - A: []
       B: []
    
    security:    # (A AND B) OR (C AND D)
     - A: []
       B: []
     - C: []
       D: []