मैंने स्वैगर निर्भरता को जोड़ा और इसे सक्षम किया, और सभी एपीआई देखने में सक्षम हूं लेकिन अधिकृत एपीआई काम नहीं कर रहा है।

स्वैगर के नीचे के संस्करण का उपयोग कर रहा हूँ:

    <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
    </dependency>

नीचे मेरा कोड है:

        @Configuration
        @EnableSwagger2
        public class SwaggerConfig {
            
             @Value("${security.oauth2.client.client-id}")
            public String CLIENT_ID;
             
             @Value("${security.oauth2.client.client-secret}") 
            public String CLIENT_SECRET;
            
            
            public String AUTH_SERVER = "https://login.microsoftonline.com/common/oauth2/v2.0";
            
            
            @Bean
            public Docket swaggerConfiguration() {
                return new Docket(DocumentationType.SWAGGER_2)
                        .select()
                        //.apis(RequestHandlerSelectors.any()) 
                        //.paths(PathSelectors.ant("/api/v1/**/**"))
                        .apis(RequestHandlerSelectors.basePackage("edu.mayo.ima.ccs.rpc_backend.controller"))
                        .paths(PathSelectors.any()) 
                        .build()
                        .securitySchemes(Arrays.asList(securityScheme()))
                        .securityContexts(Arrays.asList(securityContext()))
                        .apiInfo(getApiInfo());
                
            }
            
            @Bean
            public SecurityConfiguration security() {
                return SecurityConfigurationBuilder.builder()
                    .clientId(CLIENT_ID)
                    .clientSecret(CLIENT_SECRET)
                    .scopeSeparator(" ")
                    .useBasicAuthenticationWithAccessCodeGrant(true)
                    .build();
            }
            
            private SecurityScheme securityScheme() {
                GrantType grantType = new AuthorizationCodeGrantBuilder()
                    .tokenEndpoint(new TokenEndpoint(AUTH_SERVER + "/token", "oauthtoken"))
                    .tokenRequestEndpoint(
                      new TokenRequestEndpoint(AUTH_SERVER + "/authorize", CLIENT_ID, CLIENT_SECRET))
                    .build();
        
                SecurityScheme oauth = new OAuthBuilder().name("spring_oauth")
                    .grantTypes(Arrays.asList(grantType))
                    .scopes(Arrays.asList(scopes()))
                    .build();
                return oauth;
            }
            
            private ApiInfo getApiInfo() {
                return new ApiInfo(
                        "Protocol Catalag ",
                        "",
                        "1.0.0",
                        "",
                        null,
                        "",
                        "",
                        Collections.emptyList()
                );
            }
            
            private SecurityContext securityContext() {
                return SecurityContext.builder()
                  .securityReferences(
                    Arrays.asList(new SecurityReference("spring_oauth", scopes())))
                  .forPaths(PathSelectors.any())
                  .build();
            }
            
            private AuthorizationScope[] scopes() {
                AuthorizationScope[] scopes = { 
                  new AuthorizationScope("access_as_user", "access for application")
                 };
                return scopes;
            }
    }

उपरोक्त कॉन्फ़िगरेशन के साथ सभी एपी स्वैगर पर दिख रहे हैं लेकिन उन्हें अधिकृत करें त्रुटि दें। नीचे स्क्रीन है जब अधिकृत बटन क्लिक किया जाता है।

enter image description here

enter image description here

enter image description here

मदद की सराहना की है.!

0
Pradeep 7 अक्टूबर 2021, 16:41
अगर आपको लगता है कि उत्तर ने मदद की, तो आप इसे उत्तर के रूप में स्वीकार कर सकते हैं (उत्तर के बगल में चेक मार्क पर क्लिक करके इसे ग्रे आउट से भरने के लिए टॉगल करें)। यह समुदाय के अन्य सदस्यों के लिए फायदेमंद हो सकता है। धन्यवाद।
 – 
kavyasaraboju-MT
13 अक्टूबर 2021, 07:36

1 उत्तर

सबसे बढ़िया उत्तर

कृपया पोर्टल में API अनुमतियों के अंतर्गत access_as_user अनुमति जोड़ना सुनिश्चित करें और सुनिश्चित करें कि API उजागर हो गया है। एप्लिकेशन आईडी यूरी प्रारूप एपीआई में है: //, आप ऐप में उपयोग करने के लिए अन्य नाम दे सकते हैं। यहाँ उदाहरण में मैंने ऐप आईडी uri दी: api://my_spring_boot_api

enter image description here

फिर आपको स्कोप के तहत अतिरिक्त स्कोप देखने में सक्षम होना चाहिए।

enter image description here

फिर आपके द्वारा जोड़ी गई access_as_user अनुमति का चयन करें। (एपीआई अनुमतियां> अनुमति जोड़ें> मेरे एपीआई> आवश्यक ऐप का चयन करें> अनुमति की जांच करें> अनुमतियां जोड़ें)

enter image description here

तब आप नीचे के रूप में सहमति दे सकते हैं

enter image description here

enter image description here

यहां मैंने स्कोप >> api://my_spring_boot_api/access_as_user. सुनिश्चित करें कि पोर्टल में कॉन्फ़िगर किए गए समान दायरे का उपयोग एप्लिकेशन कॉन्फ़िगरेशन में शामिल है। स्कोप में कोड में एक्सपोजिंग रिसोर्स का आइडेंटिफायर (एप्लिकेशन आईडी यूआरआई) भी शामिल होना चाहिए।

यहाँ पूर्व: कार्यक्षेत्र: "एपीआई: //my_spring_boot_api/access_as_user"

और जब आप वेब ऐप को कॉल करते हैं तो कृपया Id_token भेजना सुनिश्चित करें और यदि आप ग्राफ़ api कहते हैं तो आप एक्सेस टोकन भेज सकते हैं।

0
kavyasaraboju-MT 11 अक्टूबर 2021, 10:41
एपीआई के साथ दायरा जोड़ने के बाद: ///access_as_user, अब एक अलग त्रुटि हो रही है
 – 
Pradeep
8 अक्टूबर 2021, 17:22
साइन इन नीचे त्रुटि है: क्षमा करें, लेकिन हमें आपको साइन इन करने में समस्या हो रही है। AADSTS500113: आवेदन के लिए कोई उत्तर पता पंजीकृत नहीं है।
 – 
Pradeep
8 अक्टूबर 2021, 17:22
क्या आपने https:localhost:9000/swagger/oauth2-redirect.html देने की कोशिश की है?
 – 
kavyasaraboju-MT
8 अक्टूबर 2021, 17:42
मुझे यह कोशिश करने दो
 – 
Pradeep
8 अक्टूबर 2021, 17:43