Skip to content

Commit

Permalink
[feature][project] Enable authentication support for Swagger (#1791)
Browse files Browse the repository at this point in the history
  • Loading branch information
lexluo09 authored Oct 12, 2024
1 parent e6daf4d commit 396c8c5
Showing 1 changed file with 45 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.tencent.supersonic.config;

import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -13,61 +12,93 @@
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.Contact;
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.swagger2.annotations.EnableSwagger2;

import java.util.Collections;
import java.util.List;

@Configuration
@EnableSwagger2
@EnableOpenApi
public class SwaggerConfiguration {

/** 标题 */
/**
* 标题
*/
@Value("${swagger.title}")
private String title;

/** 基本包 */
/**
* 基本包
*/
@Value("${swagger.base.package}")
private String basePackage;

/** 描述 */
/**
* 描述
*/
@Value("${swagger.description}")
private String description;

/** URL */
/**
* URL
*/
@Value("${swagger.url}")
private String url;

/** 作者 */
/**
* 作者
*/
@Value("${swagger.contact.name}")
private String contactName;

/** 作者网址 */
/**
* 作者网址
*/
@Value("${swagger.contact.url}")
private String contactUrl;

/** 作者邮箱 */
/**
* 作者邮箱
*/
@Value("${swagger.contact.email}")
private String contactEmail;

/** 版本 */
/**
* 版本
*/
@Value("${swagger.version}")
private String version;

@Autowired
private AuthenticationConfig authenticationConfig;

private ApiKey apiKey() {
return new ApiKey(authenticationConfig.getTokenHttpHeaderKey(),
authenticationConfig.getTokenHttpHeaderKey(), "header");
}

@Bean
public Docket createRestApi() {

return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage(basePackage)).paths(PathSelectors.any())
.build().securitySchemes(Lists.newArrayList(apiKey()));
.build().securitySchemes(Collections.singletonList(apiKey()))
.securityContexts(Collections.singletonList(securityContext()));
}

private ApiKey apiKey() {
return new ApiKey(authenticationConfig.getTokenHttpHeaderKey(),
authenticationConfig.getTokenHttpHeaderKey(), "header");
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}

private List<SecurityReference> defaultAuth() {
SecurityReference securityReference =
new SecurityReference(authenticationConfig.getTokenHttpHeaderKey(),
new springfox.documentation.service.AuthorizationScope[0]);
return Collections.singletonList(securityReference);
}

private ApiInfo apiInfo() {
Expand Down

0 comments on commit 396c8c5

Please sign in to comment.