मैं अपने 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>"
यह ASP.Core पर संभव है, लेकिन मैं इसे केवल जावा पर ही प्राप्त कर सकता हूं जैसे यह:
मैं अपनी डॉकेट सुरक्षा योजना के लिए 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");
}
1 उत्तर
आप इसे ओपन एपीआई विशिष्टता 3 द्वारा प्राप्त कर सकते हैं। ऐसा करने के लिए आपको एक निर्भरता जोड़ने की आवश्यकता है:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>${open.api.version}</version>
</dependency>
इसे शामिल करने के बाद आपको स्वैगर कॉन्फ़िगरेशन को अपडेट करना होगा और पोस्ट करना होगा कि आपको अपने टोकन के सामने एड बियरर स्कीम की आवश्यकता नहीं है:
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);
}
}
विवरण के लिए आप देख सकते हैं यह.
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।