GeoServer 2.3.0 में कस्टम प्रमाणीकरण फ़िल्टर बनाएं


10

प्रसंग

मेरी वर्तमान परियोजना में, मुझे यह सत्यापित करने की आवश्यकता है कि जियोसेवर (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>

गेम के अंत में, वेब एडमिन इंटरफ़ेस में मैं फिल्टर पैनल में एक नया आइटम हूं, और मैंने इसे डिफ़ॉल्ट मैपिंग में इस्तेमाल किया (संदर्भ के लिए नीचे की छवि देखें): यहां छवि विवरण दर्ज करें

समस्या का विवरण

यहाँ हम हैं...

क्लाइंट (ओपन लायर) द्वारा जारी किए गए मेरे डब्ल्यूएफएस अनुरोध में से कोई भी जो डिफ़ॉल्ट मैपिंग से मेल नहीं खाता है (/ **) परिभाषित फ़िल्टर के माध्यम से जा रहा है। डिबगिंग के दौरान मैंने पाया कि स्प्रिंग कॉनटेक्स्ट में परिभाषित फिल्टर चेन कभी भी मेरी परिभाषा में शामिल नहीं हैं, बल्कि हमेशा अनाम, डाइजेस्ट या बेसिक का उपयोग करते हुए क्लासिकल सहित हैं ...

सवाल

तो क्या कोई मुझे (^ ^) के साथ अधिक पूर्ण प्रलेखन के बारे में इंगित करने में सक्षम है कि मुझे यह कैसे करना है?

जवाबों:


1

मैं इसे इस तरह से एक प्रॉक्सी लागू करके करता हूं जो सत्र चर का उपयोग करने में लॉग इन के रूप में एक उपयोगकर्ता क्रेडेंशियल्स को सत्यापित कर सकता है और उन्हें केवल उन संसाधनों तक पहुंचने की अनुमति देता है जो वे हकदार हैं, अर्थात: उन परतों के लिए url की जांच करें जिन्हें कॉल किया जा रहा है और यदि उपयोगकर्ता पहुंच से इनकार करते हैं। उन्हें देखने के लिए अधिकृत नहीं है।

यदि आप उपयोगकर्ताओं को किसी विशेष क्षेत्र या सुविधा सेट पर प्रतिबंधित करना चाहते हैं, तो दो दृष्टिकोण हैं ..

  1. उपयोगकर्ता जो डेटा देखेगा उसे नियंत्रित करने के लिए Parameterized SQL Views का उपयोग करें । आप उस उपयोगकर्ता के लिए विशिष्ट मापदंडों के साथ जियोसर्वर को पारित करने से पहले यूआरएल को बदलने के लिए प्रॉक्सी का उपयोग कर सकते हैं। उपयोगकर्ता द्वारा प्रमाणित होने के बाद भी आप एक अजाक्स कॉल के माध्यम से ओपनलेयर को पैरामीटर भेज सकते हैं और OpenLayers में WMS getMAP कॉल के हिस्से के रूप में मापदंडों की आपूर्ति कर सकते हैं। प्रदर्शित किए गए वास्तविक डेटा को SLD में परिवर्तनीय प्रतिस्थापन द्वारा प्रदर्शित डेटा को फ़िल्टर करने के लिए या अपने WMS गेटअप कॉल में बाहरी शैलियाँ का उपयोग करके बदला जा सकता है, जो किसी दिए गए लेयर को प्रदर्शित करने के लिए SLD का उपयोग करता है।

  2. उपयोगकर्ता एक्सटेंशन के बाद केवल एक निर्दिष्ट क्षेत्र के आसपास मँडरा करने के लिए अनुमति देने के लिए उपयोगकर्ता प्रमाणीकरण के बाद एक अजाक्स कॉल का उपयोग करें । आप लेयरविजिबिलिटी () का भी उपयोग कर सकते हैं ताकि डेटा को भी प्रदर्शित किया जा सके।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.