Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swagger UI passing authentication token to API call in header

I am new to Swagger.

I am using Swagger UI to generate swagger documentation. I have two API calls. First call is to generate token based on user name and password. Second call needs token generated by first call.

How I set that token for second call using Swagger UI?

like image 250
Java P Avatar asked Oct 30 '15 11:10

Java P


People also ask

How do I give Authorization token in Swagger UI?

To USE the access token in the Swagger Docs UI, copy the access token from the response, and paste it into the access token field at the top of the page. Click the oauth2access_token operation located at the top of the list.

How do you send Authorization header with request in Swagger UI?

const ui = SwaggerUIBundle({ ..., requestInterceptor: function (req) { req. headers = { 'Authorization': 'Bearer ' + document. getElementById('bearer-code- input'). value , 'Accept': 'application/json', 'Content-Type': 'application/json' }; return req; }, ... })

How do you pass a Bearer Token in header?

To send a request with the Bearer Token authorization header, you need to make an HTTP request and provide your Bearer Token with the "Authorization: Bearer {token}" header. A Bearer Token is a cryptic string typically generated by the server in response to a login request.


1 Answers

@ApiImplicitParams and @ApiImplicitParam should do the trick:

@GET @Produces("application/json") @ApiImplicitParams({     @ApiImplicitParam(name = "Authorization", value = "Authorization token",                        required = true, dataType = "string", paramType = "header") }) public String getUser(@PathParam("username") String userName) {     ... } 

From the documentation:

You may wish you describe operation parameters manually. This can be for various reasons, for example:

  • Using Servlets which don't use JAX-RS annotations.
  • Wanting to hide a parameter as it is defined and override it with a completely different definition.
  • Describe a parameter that is used by a filter or another resource prior to reaching the JAX-RS implementation.

The Swagger UI will be updated so you can send your token from there. No changes to HTML will be necessary.


Note: A while ago, when documenting a REST API with Swagger, I realized that just adding @ApiImplicitParam is not enough (even if you have only one parameter). Anyway, you must add @ApiImplicitParams too.

like image 151
cassiomolin Avatar answered Oct 04 '22 00:10

cassiomolin