GlassFish में साइलेंट डोमेन प्राधिकरण

इस लेख में मैं विश्लेषण करूँगा कि आप ग्लासफिश एप्लिकेशन सर्वर पर मूक डोमेन प्राधिकरण (केर्बोरस) को कैसे लागू कर सकते हैं।
परीक्षण विंडोज 7 प्रो SP1 (64 बिट), जेडीके 1.7.0_25 (64 बिट) और ग्लासफिश 4 ​​(ver 89) के साथ एक पीसी पर आयोजित किया गया था।
हम SPNEGO लाइब्रेरी का उपयोग करेंगे। यह लेख वास्तव में अंग्रेजी में लाइब्रेरी पेज पर आपको जो भी मिल सकता है उसका अनुवाद और रूपांतरण है।


तैयारी को प्राथमिकता दें

1) सुनिश्चित करें कि आपका सर्वर एक डोमेन में है।
2) सुनिश्चित करें कि एप्लिकेशन सर्वर (GlassFish) एक डोमेन उपयोगकर्ता से शुरू होता है
3) सुनिश्चित करें कि आपके पास एक विशेष रूप से वायर्ड डोमेन उपयोगकर्ता से लॉगिन और पासवर्ड है (मैंने उसी उपयोगकर्ता का उपयोग किया था जो पैरा 2 में है)
4) सुनिश्चित करें कि HelloKDC.java सही ढंग से काम करता है
HelloKDC.java एक छोटा अनुप्रयोग है जो हमें यह समझने की अनुमति देता है कि क्या उड़ान शुरू करने के लिए सब कुछ तैयार है या नहीं और क्या उड़ान संभव है।
इस कोड में, आपको कुछ पंक्तियों को जोड़ने की आवश्यकता है, अर्थात्:

// डोमेन (पूर्व-प्रमाणीकरण) खाता
अंतिम स्ट्रिंग उपयोगकर्ता नाम = "<तीसरे पैरा से उपयोगकर्ता नाम>";

// प्री-ऑर्ट के लिए पासवर्ड।
अंतिम स्ट्रिंग पासवर्ड = "तीसरे पैराग्राफ से उपयोगकर्ता का पासवर्ड>";

// हमारी krb5 कॉन्फिग फ़ाइल का नाम
अंतिम स्ट्रिंग krbfile = "krb5.conf";

// हमारी लॉगिन कॉन्फ़िगरेशन फ़ाइल का नाम
अंतिम स्ट्रिंग loginfile = "login.conf";

// हमारे लॉगिन मॉड्यूल का नाम
अंतिम स्ट्रिंग मॉड्यूल = "स्पैनगो-क्लाइंट";


इसके बाद, krb5.conf और login.conf फाइलें जोड़ें।
मेरे मामले में, krb5.conf ऐसा दिखता है:
[Libdefaults]
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-mdc des-cbc-crc
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-mdc des-cbc-crc
अनुमत_नदीप = aes256-cts-hmac-sha1-96 aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc

[रियल्म्स]
<रूट डोमेन> = {
kdc = <केडीसी सर्वर का डोमेन नाम>
default_domain = <root domain>
}

[Domain_realm]
। <रूट डोमेन> = <रूट डोमेन>


जहां एल्गोरिदम में मैंने विंडोज 7 क्लाइंट के साथ सही तरीके से काम करने के लिए aes256-cts-hmac-sha1-96 को जोड़ा।
मेरा FQDN रूट से अलग है, हालांकि मैंने रूट और रूट KDC को जोड़ने का फैसला किया है।

HelloKDC को शुरू करने के बाद, हमें एक छोटी सी रिपोर्ट प्राप्त करनी चाहिए, जिसके अंत में " कनेक्शन परीक्षण सफल " लिखा होना चाहिए।

चलो चलते हैं!

1) ग्लासफिश लाइब्रेरी के साथ निर्देशिका में सीधे spnego.jar लाइब्रेरी जोड़ें, अर्थात् GLASSFISH_HOME_ lib
2) हम संबंधित ग्लासफिश डोमेन के डिफ़ॉल्ट- web.xml फ़ाइल को संशोधित करते हैं, यह GLASSFISH_HOME \ डोमेन \ <डोमेन नाम> \ config फ़ोल्डर में स्थित है
संशोधन एक सर्वलेट फिल्टर जोड़ने के लिए है:

<फ़िल्टर-नाम> SpnegoHttpFilter </ फ़िल्टर-नाम>
<फ़िल्टर-वर्ग> net.sourceforge.spnego.SpnegoHttpFilter </ फ़िल्टर-क्लास>

<Init-param>
<param-name> spnego.allow.basic </ param-name>
<param-value> true </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.allow.localhost </ param-name>
<param-value> true </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.allow.unsecure.basic </ param-name>
<param-value> true </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.login.client.module </ param-name>
<param-value> spnego-client </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.krb5.conf </ param-name>
<param-value> krb5.conf </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.login.conf </ param-name>
<param-value> login.conf </ param-value>
</ Init-param>

<Init-param>
<परम-नाम> spnego.preauth.username </ param-name>
<param-value> HelloKDC से उपयोगकर्ता नाम </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.preauth.password </ param-name>
<param-value> HelloKDC से उपयोगकर्ता पासवर्ड </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.login.server.module </ param-name>
<param-value> spnego-server </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.prompt.ntlm </ param-name>
<param-value> true </ param-value>
</ Init-param>

<Init-param>
<param-name> spnego.logger.level </ param-name>
<param-value> 1 </ param-value>
</ Init-param>


<फ़िल्टर-मानचित्रण>
<फ़िल्टर-नाम> SpnegoHttpFilter </ फ़िल्टर-नाम>
<url-pattern> * .jsp </ url-pattern>
</ फ़िल्टर-मानचित्रण>


3) krb5.conf फ़ाइल की प्रतिलिपि बनाएँ (GLASSFISH_HOME \ डोमेन \ <डोमेन नाम> \ config में भी)
4) GLASSFISH_HOME \ domain \ <domain name> \ config में login.conf फ़ाइल को संशोधित करें। पिछले login.conf से फ़ाइल के अंत में डेटा जोड़कर (जो HelloKDC के लिए किया गया था)
5) एसपीएन रजिस्टर करें
मेरे मामले में, मशीन का नाम smirnoff था, मशीन का पूरी तरह से योग्य नाम smirnoff है। <पूरी तरह से योग्य डोमेन नाम> और इसलिए मैंने पंजीकृत (अधिक सटीक रूप से पंजीकृत LAN व्यवस्थापकों) 2 SPN को खाता नाम (जिसे हमने HelloKDN स्रोत में दर्ज किया था और सर्वलेट फ़िल्टर के लिए सेटिंग्स में), और। यानी
setpn -A HTTP / smirnoff <खाता नाम>
setpn -A HTTP / smirnoff। <पूरी तरह से योग्य डोमेन नाम> <खाता नाम>
यानी एक पूर्ण नाम और एक संक्षिप्त के साथ एक रिकॉर्ड जोड़ें।

काम की जाँच

आप एक साधारण jsp पृष्ठ (jsp का उपयोग करके ऑपरेशन की जाँच कर सकते हैं क्योंकि हमने अनुरोध को रोकने के लिए फ़िल्टर सेटिंग्स में * .jsp मास्क निर्दिष्ट किया है)।
Hello SPNEGO Example

Hello <%= request.getRemoteUser() %> !


जिसका उदाहरण हमने अपने ग्लासफिश डोमेन के डॉक्रोट में दिया है।
पृष्ठ पर पहुंचते समय, हमें निम्नलिखित पाठ प्राप्त करना चाहिए:
नमस्कार <आपके खाते का नाम>!

पुनश्च

स्रोत कोड प्रदर्शन के साथ सामना नहीं कर सका।
मुझे लेख में टिप्पणियों का जवाब देने में खुशी होगी।

Source: https://habr.com/ru/post/In207144/


All Articles