Last active
March 8, 2021 17:01
-
-
Save rbaul/983f83b9f998dfc4a465fc759d66f4d6 to your computer and use it in GitHub Desktop.
Swagger configuration of Bearer Authentication
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.springframework.beans.factory.annotation.Value; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import springfox.documentation.builders.ApiInfoBuilder; | |
import springfox.documentation.builders.AuthorizationScopeBuilder; | |
import springfox.documentation.builders.PathSelectors; | |
import springfox.documentation.builders.RequestHandlerSelectors; | |
import springfox.documentation.service.ApiInfo; | |
import springfox.documentation.service.ApiKey; | |
import springfox.documentation.service.AuthorizationScope; | |
import springfox.documentation.service.SecurityReference; | |
import springfox.documentation.spi.DocumentationType; | |
import springfox.documentation.spi.service.contexts.SecurityContext; | |
import springfox.documentation.spring.web.plugins.Docket; | |
import springfox.documentation.swagger.web.ApiKeyVehicle; | |
import springfox.documentation.swagger2.annotations.EnableSwagger2; | |
import java.util.Collections; | |
import java.util.List; | |
@Configuration | |
@EnableSwagger2 | |
public class SwaggerConfig { | |
private static final String AUTHORIZATION_TOKEN_REFERENCE = "Authorization-Token"; | |
private static final String AUTHORIZATION_HEADER_NAME = "token"; | |
@Value("${application.formatted-version:development}") | |
private String version; | |
@Value("${application.title:default}") | |
private String title; | |
@Value("${application.ip:localhost}") | |
private String baseIp; | |
@Bean | |
public Docket allApi() { | |
return new Docket(DocumentationType.SWAGGER_2) | |
.groupName("Group Name") | |
.enable(true) | |
.enableUrlTemplating(true) | |
.host(baseIp) | |
.securitySchemes(Collections.singletonList(apiKey())) | |
.securityContexts(Collections.singletonList(securityContext())) | |
.select() | |
.apis(RequestHandlerSelectors.basePackage(<SomeController>.class.getPackage().getName())) | |
.paths(PathSelectors.any()) | |
.build() | |
.apiInfo(getApiInfo()); | |
} | |
private ApiInfo getApiInfo() { | |
return new ApiInfoBuilder() | |
.title(title) | |
.version(version).build(); | |
} | |
private ApiKey apiKey() { | |
return new ApiKey(AUTHORIZATION_TOKEN_REFERENCE, AUTHORIZATION_HEADER_NAME, ApiKeyVehicle.HEADER.getValue()); | |
} | |
private SecurityContext securityContext() { | |
return SecurityContext.builder() | |
.securityReferences(defaultAuth()).build(); | |
} | |
private List<SecurityReference> defaultAuth() { | |
AuthorizationScope[] authScopes = new AuthorizationScope[1]; | |
authScopes[0] = new AuthorizationScopeBuilder() | |
.scope("global") | |
.description("full access").build(); | |
return Collections.singletonList(SecurityReference.builder() | |
.reference(AUTHORIZATION_TOKEN_REFERENCE) | |
.scopes(authScopes).build()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment