मैं अपने 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 पर संभव है, लेकिन मैं इसे केवल जावा पर ही प्राप्त कर सकता हूं जैसे यह:

enter image description here

मैं अपनी डॉकेट सुरक्षा योजना के लिए 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
Emin Bilgiç 21 अक्टूबर 2021, 18:36

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);
        }
    
    } 

विवरण के लिए आप देख सकते हैं यह.

0
Dharman 21 अक्टूबर 2021, 20:45
मुझे मिल गया, बहुत बहुत धन्यवाद
 – 
Emin Bilgiç
22 अक्टूबर 2021, 15:06