我正在嘗試在SwaggerConfiguration類中進行一些安全配置。我的目的是發送帶有身份驗證密鑰的方案關鍵字,例如
curl -X GET "http://localhost:8080" -H "accept: */*" -H "Authorization: Bearer <authorization-value>"
或者
curl -X GET "http://localhost:8080" -H "accept: */*" -H "Authorization: ApiKey <authorization-value>"
在
我應該用什么來代替 Docket 安全方案ApiKey?
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("mypackagename"))
.build()
.useDefaultResponseMessages(false)
.apiInfo(metaData())
.securitySchemes(Collections.singletonList(getApiKey()))
.securityContexts(Collections.singletonList(securityContext()));
private ApiKey getApiKey() {
return new ApiKey("apiKey", "Authorization", "Header");
}
uj5u.com熱心網友回復:
您可以通過 Open API 規范 3 實作這一點。為此,您需要添加一個依賴項:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>${open.api.version}</version>
</dependency>
包含此內容后,您需要將 swagger 配置更新為并發布您不需要在令牌前添加 Bearer 方案:
package com.test.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.extern.log4j.Log4j2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@Log4j2
public class SwaggerConfig {
private static final String SCHEME_NAME = "bearerScheme";
private static final String SCHEME = "Bearer";
@Bean
public OpenAPI customOpenAPI() {
var openApi = new OpenAPI()
.info(getInfo());
addSecurity(openApi);
return openApi;
}
private Info getInfo() {
return new Info()
.title("Your APIs Documentation")
.description("The API documentation for your Portal.")
.version("1.0.0")
.license(getLicense());
}
private License getLicense() {
return new License()
.name("Your")
.url("https://www.yours.com/en/");
}
private void addSecurity(OpenAPI openApi) {
var components = createComponents();
var securityItem = new SecurityRequirement().addList(SCHEME_NAME);
openApi
.components(components)
.addSecurityItem(securityItem);
}
private Components createComponents() {
var components = new Components();
components.addSecuritySchemes(SCHEME_NAME, createSecurityScheme());
return components;
}
private SecurityScheme createSecurityScheme() {
return new SecurityScheme()
.name(SCHEME_NAME)
.type(SecurityScheme.Type.HTTP)
.scheme(SCHEME);
}
}
有關詳細資訊,您可以參考這個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331722.html
