Skip to content

Instantly share code, notes, and snippets.

@rbaul
Last active March 8, 2021 17:01
Show Gist options
  • Save rbaul/983f83b9f998dfc4a465fc759d66f4d6 to your computer and use it in GitHub Desktop.
Save rbaul/983f83b9f998dfc4a465fc759d66f4d6 to your computer and use it in GitHub Desktop.
Swagger configuration of Bearer Authentication
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