tdmiller
tdmiller

Reputation: 2192

How to get Swagger to send api_key in Header and in request URL?

I am able to either get the API key to be represented as a header or as a tag on the end of the URL, but I am needing it to be both. Is there any way for this to be possible? The picture is linked here

Upvotes: 3

Views: 11000

Answers (2)

Helen
Helen

Reputation: 97677

Define both the header and the query parameter in the securityDefinitions section (in OpenAPI 2.0) or the components/securitySchemes section (in OpenAPI 3.0) of your API definition:

# swagger: '2.0'

securityDefinitions:
  apiKeyHeader:
    type: apiKey
    in: header
    name: X-EGEN-AccessTokenID
  apiKeyQueryParam:
    type: apiKey
    in: query
    name: api_key   # replace with your query param name

Then, if you need both the header and query param be passed in the same request:

security:
  - apiKeyHeader: []
    apiKeyQueryParam: []

Or if either the header or query param should be used, but not both:

security:
  - apiKeyHeader: []
  - apiKeyQueryParam: []

More info here: http://swagger.io/docs/specification/authentication/api-keys/

In Swagger UI, when you click "Authorize", you will be enter the values for both the header and the query parameter.

Upvotes: 2

tdmiller
tdmiller

Reputation: 2192

window.swaggerUi.api.clientAuthorizations.add(swashbuckleConfig.apiKeyName, new SwaggerClient.ApiKeyAuthorization(swashbuckleConfig.apiKeyName, key, "header"));
      window.swaggerUi.api.clientAuthorizations.add(swashbuckleConfig.apiKeyName + " query", new SwaggerClient.ApiKeyAuthorization(swashbuckleConfig.apiKeyName, key, "query"));

Upvotes: 0

Related Questions