Reputation: 13
I am trying to set up Swagger UI with authorization support in my Spring Boot application. Despite configuring everything as per documentation, the authorization button isn't appearing on the Swagger UI page. Here is the detailed explanation of my setup:
What I Expect: The Swagger UI should show an "Authorize" button in the top right corner, which allows users to input a JWT token in the Authorization header for the API requests.
What I See: The Swagger UI loads as expected but without the "Authorize" button for adding JWT tokens. Here’s what it looks like: Dependencies:
I am using the following dependencies in my build.gradle file for Swagger integration:
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger2:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket apiDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(path -> !path.startsWith("/login")) // Exclude login paths
.build()
.securitySchemes(Arrays.asList(apiKey()))
.securityContexts(Arrays.asList(securityContext()));
}
private ApiKey apiKey() {
return new ApiKey("JWT", "Authorization", "header");
}
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
}
}
Upvotes: 0
Views: 109