प्रसंग
मेरी वर्तमान परियोजना में, मुझे यह सत्यापित करने की आवश्यकता है कि जियोसेवर (2.3.0) में आने वाले अनुरोधों की अनुमति है।
परियोजना उन तथ्यों को रखती है:
- जीएस क्लाइंट प्रमुख जानकारी (उदाहरण के लिए पासवर्ड) प्रदान नहीं कर सकता है, जीएस खुद का उपयोगकर्ता / भूमिका प्रतिनिधि के साथ कोई संबंध नहीं है
इसलिए हमने यह देखने के लिए किन्हीं फ़िल्टर तंत्र का उपयोग करने का अवसर लिया है:
- एक वैध अनुरोध (एक विशिष्ट WFS परत के लिए) में एक विशेष HTTP शीर्षलेख शामिल है (मान लें कि X-CUSTOM-VALID)
- यह शीर्ष लेख एक JSON एन्कोडेड संदेश है जो इस तथ्य को प्रमाणित करने के लिए पर्याप्त जानकारी रखता है कि अनुरोध एक क्लाइंट द्वारा शुरू किया गया था जो एक वैध तीसरी प्रणाली से जुड़ा था (एक उपयोगकर्ता नाम, एक गुप्त, इस तरह से सामान)
स्थिति
प्रलेखन हमें बता रहा है कि हम ऐसा करने में सक्षम होना चाहिए ...
हालांकि, प्रलेखन स्पष्ट नहीं है कि ऐसे घटकों को कैसे बनाया जाए और उन्हें कैसे कॉन्फ़िगर किया जाए।
जियोसर्वर को डीबग करना मैंने पाया कि इस तरह के फिल्टर को कॉन्फ़िगर करने के लिए, इसे एक समर्पित प्रमाणीकरण प्रदाता की आवश्यकता होती है। वेब व्यवस्थापक इंटरफ़ेस (प्रमाणीकरण के तहत, प्रमाणीकरण फ़िल्टर सूची में) में एक पैनल रखने के लिए
पैनल
इस प्रकार मेरा कोड उन फाइलों से बना है:
- ProducteurAuthFilterPanel.java
- ProducteurAuthFilterPanelInfo.java
- ProducteurAuthenticationFilterConfig.java
- ProducteurAuthenticationFilterPanel.html
इन्हें वेब व्यवस्थापक इंटरफ़ेस में एक पैनल जोड़ना होगा। ProducteurAuthFilterPanelInfo
दो अन्य को ProducteurAuthenticationFilter
यहां- साथ ( फिल्टर ^ ^) के बाद गोंद कर रहा है।
ProducteurAuthenticationFilterConfig
कि इसके निर्माता में घोषित करती है:
setClassName(ProducteurAnonymousAuthenticationProvider.class.getName());
setName("producteur");
फ़िल्टर (प्रदाता)
अब, एक श्रृंखला में शामिल करने के लिए फ़िल्टर बनाने के लिए आवश्यक कक्षाएं (मुझे लगता है):
- ProducteurAuthenticationFilter : फ़िल्टर कार्यान्वयन का विस्तार
GeoServerSecurityFilter
और कार्यान्वयनGeoServerAuthenticationFilter
- ProducteurAnonymousAuthenticationProvider: नए फ़िल्टर को परिभाषित करने के लिए किसी भी तरह पैनल (ऊपर) द्वारा आवश्यक है
- ProducteurAuthenticationException: AuthenticationEntryPoint में प्रयुक्त (केवल अब के लिए Http403ForbiddenEntryPoint)
अंत में, सेम को इस तरह परिभाषित किया गया है:
<bean id="yaanonymousFilterProvider" class="dgarne.java.geoserver.security.ProducteurAnonymousAuthenticationProvider"/>
<bean id="producteurAuthPanelInfo" class="dgarne.java.geoserver.security.ProducteurAuthFilterPanelInfo">
<property name="id" value="security.producteurAuthFilter" />
<property name="shortTitleKey" value="ProducteurAuthFilterPanel.short"/>
<property name="titleKey" value="ProducteurAuthFilterPanel.title"/>
<property name="descriptionKey" value="ProducteurAuthFilterPanel.description"/>
</bean>
गेम के अंत में, वेब एडमिन इंटरफ़ेस में मैं फिल्टर पैनल में एक नया आइटम हूं, और मैंने इसे डिफ़ॉल्ट मैपिंग में इस्तेमाल किया (संदर्भ के लिए नीचे की छवि देखें):
समस्या का विवरण
यहाँ हम हैं...
क्लाइंट (ओपन लायर) द्वारा जारी किए गए मेरे डब्ल्यूएफएस अनुरोध में से कोई भी जो डिफ़ॉल्ट मैपिंग से मेल नहीं खाता है (/ **) परिभाषित फ़िल्टर के माध्यम से जा रहा है। डिबगिंग के दौरान मैंने पाया कि स्प्रिंग कॉनटेक्स्ट में परिभाषित फिल्टर चेन कभी भी मेरी परिभाषा में शामिल नहीं हैं, बल्कि हमेशा अनाम, डाइजेस्ट या बेसिक का उपयोग करते हुए क्लासिकल सहित हैं ...
सवाल
तो क्या कोई मुझे (^ ^) के साथ अधिक पूर्ण प्रलेखन के बारे में इंगित करने में सक्षम है कि मुझे यह कैसे करना है?