I have a java EE application and I want to add swagger-ui to document my java REST API.
my Swagger-ui it works but I want to add the Authorize Button to swagger-ui in my java EE application
thnak you
this is my pom.xml
<dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/io.swagger/swagger-jaxrs --> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-jaxrs</artifactId> <version>1.6.1</version> </dependency> </dependencies>
Application.java
@ApplicationPath("api") public class Aplicacion extends Application{ public Aplicacion() { BeanConfig beanConfig = new BeanConfig(); beanConfig.setVersion("1.0.0"); beanConfig.setTitle("TJaxRs Swagger"); beanConfig.setBasePath("/JaxRs/api"); beanConfig.setResourcePackage("org.api.recursos"); beanConfig.setScan(true); } }
Advertisement
Answer
I would strongly recommend OpenAPI Specification to comprehend API definition details at the first step. https://swagger.io/docs/specification/authentication/. Then, Swagger Core Jersey’s Github page might be the right address https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5#using-a-servlet.
For finding quick answer I’m going to explain when and why “Authorize” button appear on the right top corner. Please take a look at default Swagger’s pet example via https://editor.swagger.io. You will see securityDefinitions right after the endpoint definitions. By having this, we can define security criteria. It is like a variable declaration in software.
securityDefinitions: petstore_auth: type: "oauth2" authorizationUrl: "http://petstore.swagger.io/oauth/dialog" flow: "implicit" scopes: write:pets: "modify pets in your account" read:pets: "read your pets" api_key: type: "apiKey" name: "api_key" in: "header"
That is not save us, we have to link defined security options with APIs. Within API, you can put defined security options which is being enabled for specified API.
responses: "200": description: "successful operation" schema: $ref: "#/definitions/ApiResponse" security: - petstore_auth: - "write:pets" - "read:pets"
In the Java site, bean config would give a chance to modify generated Swagger content. That would be something like below. Hopefully, you can get benefit from it.
BeanConfig swaggerConfigBean = new BeanConfig(); swaggerConfigBean.setConfigId(CONFIG_ID); swaggerConfigBean.setTitle(TITLE); swaggerConfigBean.setContact(CONTRACT); swaggerConfigBean.setSchemes(new String[]{"http", "https"}); swaggerConfigBean.setResourcePackage(yourPackage); swaggerConfigBean.setVersion(VERSION); swaggerConfigBean.setBasePath(BASE_PATH); swaggerConfigBean.setPrettyPrint(true); swaggerConfigBean.setScan(true); Swagger swagger = swaggerConfigBean.getSwagger(); swagger.addSecurityDefinition(SECURITY_DEF_FOR_API_KEY, new ApiKeyAuthDefinition(X_HEADER_API_KEY, In.HEADER));