2015-09-03 10 views
12

मैं स्वैगर 2.0 एनोटेशन का उपयोग करके मूल प्रमाणीकरण कैसे परिभाषित करता हूं और इसे स्वैगर यूआई में प्रदर्शित करता हूं।स्वैगर 2.0 जहां मूल ऑथ स्कीमा घोषित किया गया है

संसाधन में मेरे पास है:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")}) 
public Response getCategories(); 

मैं यहाँ देखा:

https://github.com/swagger-api/swagger-core/wiki/Annotations#authorization-authorizationscope

और यह कहते हैं, "एक बार जब आप की घोषणा की और कॉन्फ़िगर कर दिया है जो प्राधिकरण योजनाओं आप अपने एपीआई में समर्थन करते हैं, आप इन एनोटेशन का उपयोग यह नोट करने के लिए कर सकते हैं कि किसी प्राधिकरण या किसी विशिष्ट ऑपरेशन पर प्राधिकरण योजना की आवश्यकता है "लेकिन मुझे कुछ भी नहीं मिल रहा है जो प्राधिकरण योजनाओं को घोषित और कॉन्फ़िगर करने के बारे में बात करता है।

अद्यतन:

मैं कैसे स्कीमा घोषित करने के लिए पर कोड पाया है, लेकिन मैं अभी भी UI में प्रमाणीकरण स्कीमा बारे में कोई जानकारी नहीं दिख रहा। मुझे यकीन नहीं है कि मुझे क्या याद आ रहा है

@SwaggerDefinition 
public class MyApiDefinition implements ReaderListener { 
    public static final String BASIC_AUTH_SCHEME = "basicAuth"; 

    @Override 
    public void beforeScan(Reader reader, Swagger swagger) { 
    } 

    @Override 
    public void afterScan(Reader reader, Swagger swagger) { 
     BasicAuthDefinition basicAuthDefinition = new BasicAuthDefinition(); 
     swagger.addSecurityDefinition(BASIC_AUTH_SCHEME, basicAuthDefinition); 
    } 
} 
+0

क्या आप इस समस्या को हल करने का प्रबंधन करते थे? –

उत्तर

2

मैंने इसके साथ भी struggeled। मेरे मामले में मैंने swagger-maven-plugin का उपयोग किया।

<securityDefinitions> 
    <securityDefinition> 
    <name>basicAuth</name> 
    <type>basic</type> 
    </securityDefinition> 
</securityDefinitions> 

है कि मैं इस तरह मेरी संसाधन पर इसे जोड़ने के लिए सक्षम था के बाद: इस को हल करने के मैं Maven प्लगइन के भीतर इस जोड़ा

@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")}) 

उत्पन्न json प्रत्येक endpoint के लिए सुरक्षा तत्व शामिल हैं:

"security":[{ 
    "basicAuth" : [] 
}] 

और सुरक्षा परिभाषा:

"securityDefinitions" : { 
    "basicAuth" : { 
     "type" : "basic" 
    } 
    } 

मुझे आशा है कि इससे दूसरों की भी मदद मिलती है।

5

Springfox 2.6 टिप्पणियों का उपयोग करने के लिए, आप पहली बार सुरक्षा के रूप में मूल प्रमाणीकरण को परिभाषित करना होगा जब आप अपनी कॉन्फ़िगरेशन में डॉकेट सेट करते हैं, तो इस प्रकार:

List<SecurityScheme> schemeList = new ArrayList<>(); 
schemeList.add(new BasicAuth("basicAuth")); 

return new 
    Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo) 
            .securitySchemes(schemeList) 
            ... 

फिर आप स्प्रिंगफ़ोफ़ का उपयोग कर सकते हैं ऑपरेशन के लिए बेसिक एथ सेट करने के लिए आपकी सेवा में एक्स एनोटेशन, जिसके लिए आप प्रमाणीकरण की आवश्यकता चाहते हैं:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")}) 
public Response getCategories(); 
संबंधित मुद्दे