क्या ओएथ 2 का उपयोग करने वाले एपीआई के लिए प्रलेखन/परीक्षण उपकरण के रूप में स्वैगर का उपयोग करना संभव है? मुझे swagger साइट पर कुछ भी नहीं दिख रहा है (या उस मामले के लिए कहीं और)। मैंने जो भी उपयोग देखा है वह या तो एपीआई कुंजी, HTTP मूल, या कुकीज़ का उपयोग करता है।OAuth API के साथ swagger का उपयोग कैसे करें?
उत्तर
मैं एक ही पंक्ति के साथ काम कर रहा हूं। स्वैगर किसी हेडर या यूआरएल को एपीआई कुंजी या टोकन परिभाषित करेगा। एपीआई और एप में एक सत्यापन सहायक जोड़ना एक मानक दृष्टिकोण है।
ओथ को एचटीएमएल समीक्षा की आवश्यकता है और हैंडशेक औथ प्रक्रिया शुरू करने के लिए लॉगिन करें। इसका मतलब यह है कि एक स्वैगर एपीआई को मानक लॉगिन और स्कोप स्वीकृति के लिए वेब इंटरफ़ेस का समर्थन करने की आवश्यकता होगी। Swagger में रोलिंग oauth कुछ तर्क लूप में परिणाम, जो लंबे समय तक समर्थन करने के लिए आसान नहीं है।
एक अलग दृष्टिकोण जिसे हम खोज रहे हैं वह एपीआई हैंडल को स्टोर करने और कई अलग-अलग ओथ प्रदाताओं के लिए एक्सेस टोकन स्टोर करने का विकल्प है; गिटहब, ट्विटर और फेसबुक। इसका परिणाम लॉगिन लूप भी हो सकता है।
यहां पार्टी के लिए देर हो चुकी है लेकिन ओथ समर्थन अब swagger-core के 1.3.0-आरसी 1 में है। जावास्क्रिप्ट लाइब्रेरी जो ओएथ का समर्थन कर सकती है, को कल swagger-js में रिलीज़ किया गया था। अंत में, swagger-ui विकास चरण में है, और जल्द ही एक ओथ अंतर्निहित और सर्वर प्रवाह होगा।
बहुत बहुत धन्यवाद - पार्टी के देर से कभी दिखने से कहीं ज्यादा बेहतर नहीं है! यह कमाल की खबर है। धन्यवाद, फ्रेट आपातकालीन हार्बर गाय! :-) – fool4jesus
ब्लॉग की पोस्ट http://developers-blog.helloreverb.com/enabling-oauth-with-swagger/ @fehguy द्वारा उद्धृत जावा कोड का एक उदाहरण दिखाता है जिसमें स्वैगर द्वारा उत्पन्न जेसन में प्राधिकरण डेटा शामिल है, हालांकि मेरा प्रश्न यह था कि इसे स्प्रिंग, जेएक्सआरएस और सीएक्सएफ के साथ ऐप के साथ शामिल किया जाना चाहिए। मुझे इसे सीएक्सएफ + जेएक्सआरएस नमूना में नहीं मिला: https://github.com/swagger-api/swagger-core/tree/master/samples/java-jaxrs-cxf
हालांकि, थोड़ी अधिक और गॉचा की तलाश में!
आवश्यक है एक वर्ग बूटस्ट्रैप कहा जाता है के साथ एक बीन में शामिल हैं (HttpServlet फैली) और एक स्थिर ब्लॉक!
राय: हो सकता है कि यह स्टेग क्लास में स्वैगर कॉन्फिग स्कैनर द्वारा स्वेट में एक स्थिर ब्लॉक के बजाय एनोटेशन से लोड "स्प्रिंग-फ्रेंडली" होगा।
पहला लिंक मृत है – Andrii
आजकल, ऐसा करने के लिए एक और तरीका है .. आप किस प्रकार का swagger/spring का उपयोग कर रहे हैं? मैं मदद कर सकता हूं .. और मेरा जवाब अपडेट करें .. –
@Configuration
public class SwaggerConfiguration {
@Bean
@DependsOn("jaxRsServer") //org.apache.cxf.endpoint.Server bean
public ServletContextInitializer initializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner();
Swagger swagger = scanner.getSwagger();
servletContext.setAttribute("swagger", swagger);
}
};
}
@Bean
public Feature swaggerFeature() {
XSwagger2Feature feature = new XSwagger2Feature();
return feature;
}
@Bean
public FilterRegistrationBean swaggerApiFilter() {
ApiOriginFilter filter = new ApiOriginFilter();
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(filter);
registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return registrationBean;
}
public static class XSwagger2Feature extends Swagger2Feature {
@Override
protected void addSwaggerResource(Server server) {
super.addSwaggerResource(server);
BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner();
Swagger swagger = scanner.getSwagger();
swagger.securityDefinition("api_key", new ApiKeyAuthDefinition("api_key", In.HEADER));
swagger.securityDefinition("petstore_auth",
new OAuth2Definition()
.implicit("http://petstore.swagger.io/api/oauth/dialog")
.scope("read:pets", "read your pets")
.scope("write:pets", "modify pets in your account"));
}
}
}
टिप्पणी के लिए धन्यवाद। ऐसा लगता है कि आप swagger की विकास टीम का हिस्सा हैं? क्या कोई दस्तावेज है जो आपकी प्रगति या प्रक्रिया से बात करता है? धन्यवाद! – fool4jesus