मैंने स्वैगर निर्भरता को जोड़ा और इसे सक्षम किया, और सभी एपीआई देखने में सक्षम हूं लेकिन अधिकृत एपीआई काम नहीं कर रहा है।
स्वैगर के नीचे के संस्करण का उपयोग कर रहा हूँ:
<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;
}
}
उपरोक्त कॉन्फ़िगरेशन के साथ सभी एपी स्वैगर पर दिख रहे हैं लेकिन उन्हें अधिकृत करें त्रुटि दें। नीचे स्क्रीन है जब अधिकृत बटन क्लिक किया जाता है।
मदद की सराहना की है.!
1 उत्तर
कृपया पोर्टल में API अनुमतियों के अंतर्गत access_as_user अनुमति जोड़ना सुनिश्चित करें और सुनिश्चित करें कि API उजागर हो गया है। एप्लिकेशन आईडी यूरी प्रारूप एपीआई में है: //, आप ऐप में उपयोग करने के लिए अन्य नाम दे सकते हैं। यहाँ उदाहरण में मैंने ऐप आईडी uri दी: api://my_spring_boot_api
फिर आपको स्कोप के तहत अतिरिक्त स्कोप देखने में सक्षम होना चाहिए।
फिर आपके द्वारा जोड़ी गई access_as_user अनुमति का चयन करें। (एपीआई अनुमतियां> अनुमति जोड़ें> मेरे एपीआई> आवश्यक ऐप का चयन करें> अनुमति की जांच करें> अनुमतियां जोड़ें)
तब आप नीचे के रूप में सहमति दे सकते हैं
यहां मैंने स्कोप >> api://my_spring_boot_api/access_as_user. सुनिश्चित करें कि पोर्टल में कॉन्फ़िगर किए गए समान दायरे का उपयोग एप्लिकेशन कॉन्फ़िगरेशन में शामिल है। स्कोप में कोड में एक्सपोजिंग रिसोर्स का आइडेंटिफायर (एप्लिकेशन आईडी यूआरआई) भी शामिल होना चाहिए।
यहाँ पूर्व: कार्यक्षेत्र: "एपीआई: //my_spring_boot_api/access_as_user"
और जब आप वेब ऐप को कॉल करते हैं तो कृपया Id_token भेजना सुनिश्चित करें और यदि आप ग्राफ़ api कहते हैं तो आप एक्सेस टोकन भेज सकते हैं।
संबंधित सवाल
नए सवाल
spring-boot
स्प्रिंग बूट एक ऐसा ढांचा है, जो पूर्ण न्यूनतम उपद्रव के साथ आसानी से वसंत-संचालित, उत्पादन-ग्रेड अनुप्रयोगों और सेवाओं को बनाने की अनुमति देता है। यह स्प्रिंग प्लेटफ़ॉर्म के नए और अनुभवी उपयोगकर्ताओं के लिए काम करने के लिए डिज़ाइन किए गए स्प्रिंग प्लेटफ़ॉर्म के बारे में एक राय लेता है।