java - पासवर्ड के साथ SPNEGO प्रमाणीकरण समस्या



active-directory websphere (1)

मैंने websphere के साथ एसपीएनजीओ के माध्यम से केर्बोस प्रमाणीकरण का उपयोग करने के लिए अपने आवेदन को कॉन्फ़िगर किया है।

यहाँ विवरण हैं

krb5.conf

[libdefaults]
    default_realm = ABC.MYCOMPANY.COM
    default_keytab_name = FILE:C:\IBM\WebSphere\AppServer\kerberos\MyServer.keytab
    default_tkt_enctypes = rc4-hmac des-cbc-md5
    default_tgs_enctypes = rc4-hmac des-cbc-md5
    forwardable  = true
    renewable  = true
    noaddresses = true
    clockskew  = 300
[realms]
    ABC.MYCOMPANY.COM = {
        kdc = TEST.abc.mycompany.com:88
        default_domain = mycompany.com
    }
[domain_realm]
    .mycompany.com = ABC.MYCOMPANY.COM

login.conf

spnego-client {
    com.sun.security.auth.module.Krb5LoginModule required;
};

spnego-server {
    com.sun.security.auth.module.Krb5LoginModule required
    storeKey=true
    useKeyTab=true
    keyTab="MyServer.keytab";
};

स्पनेगो गुण

Spnego properties:
spnego.allow.basic=false
spnego.allow.localhost=false
spnego.allow.unsecure.basic=false
spnego.login.client.module=spnego-client
spnego.login.server.module=spnego-server
spnego.prompt.ntlm=false
spnego.allow.delegation=true
spnego.logger.level=1

जब मैं अपने आवेदन का उपयोग करता हूं, तो मुझे निम्नलिखित त्रुटि मिलती है

Config missing param value for: spnego.preauth.password Stack Trace : java.lang.NullPointerException: Config missing param value for: spnego.preauth.password at net.sourceforge.spnego.SpnegoAuthenticator$1.getInitParameter(SpnegoAuthenticator.java:218) at net.sourceforge.spnego.SpnegoFilterConfig.<init>(SpnegoFilterConfig.java:145) at net.sourceforge.spnego.SpnegoFilterConfig.getInstance(SpnegoFilterConfig.java:316) at net.sourceforge.spnego.SpnegoAuthenticator.<init>(SpnegoAuthenticator.java:206)

कीटाब फ़ाइल बनाने के लिए कमान

C:\IBM\WebSphere\AppServer\java>ktpass -out c:\temp\MyServer.keytab -princ HTTP/TEST.abc.mycompany.[email protected].MYCOMPANY.COM -mapUser wasMyServer -mapOp set -pass mypassword -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL

मैं spnego पासवर्ड का उपयोग नहीं कर रहा हूँ, मैं इसे कीटैब का उपयोग करना चाहता हूं, मुझे समझ में नहीं आ रहा है कि ऐसा क्यों कह रहा है कि परम गायब है।


जब आपने अपना प्रश्न सक्रिय निर्देशिका के साथ टैग नहीं किया था, तो आपको इसे चलाना होगा क्योंकि आप आरसी 4-एचएमएसी-एनटी का उपयोग करने की कोशिश कर रहे हैं, जो कि माइक्रोसॉफ्ट सक्रिय निर्देशिका के प्रमुख एन्क्रिप्शन एल्गोरिदम थे। मैं कहता हूं, क्योंकि विंडोज सर्वर 2008 आर 2 के साथ शुरू, एईएस 26-एसएचए 1 डिफ़ॉल्ट एन्क्रिप्शन एल्गोरिदम बन गया। उस ने कहा, सक्रिय निर्देशिका खाता मेरसर्वर को Kerberos प्रोटोकॉल का अनुपालन करने के लिए कॉन्फ़िगर करने की आवश्यकता है। यह एक उपयोगकर्ता खाता होना चाहिए, कंप्यूटर खाता नहीं, वेबस्पेयर सेटअप निर्देशों के अनुसार, और आपको सर्वर पर ठीक से कर्बराइज्ड सेवा चलाने के लिए लचीलापन देना चाहिए। उस ने कहा, "खाता" टैब पर उपयोगकर्ता खाते "myServer" के लिए:

  1. सभी खाते के विकल्प सुनिश्चित करें (पासवर्ड को कभी भी समाप्त नहीं किया जा सकता है) अनियंत्रित हैं
  2. सुनिश्चित करें कि एसपीएन HTTP / TEST.abc.mycompany.com खाता को असाइन किया गया है।

संदर्भ: WebSphere अनुप्रयोग सर्वर के अंतर्गत SPNEGO का प्रबंध करना : कर्बोरोस सेवा प्रमुख नामों का उपयोग करने की युक्तियां

संपादन:

KRB5.CONF

आपके krb5.conf में एक समस्या प्रतीत होती है आपके पास केवल आरसी 4-एचएमएसी के समर्थन के रूप में दिखाए गए इन दो पंक्तियां हैं:

default_tkt_enctypes = rc4-hmac des-cbc-md5
default_tgs_enctypes = rc4-hmac des-cbc-md5

पूरी तरह से आरसी 4-एचएमएसी एन्क्रिप्शन प्रकार को सक्षम करने के लिए, नीचे अतिरिक्त लाइन जोड़ें:

permitted_enctypes = rc4-hmac des-cbc-md5

(एक साइड नोट के रूप में, कोई भी अब des-cbc-md5 एन्क्रिप्शन प्रकार का उपयोग नहीं करता है, लेकिन मैंने इसे वहां छोड़ दिया था)

डीएनएस डोमेन नाम को इस फ़ाइल के दौरान संगत होना चाहिए। सादगी खातिर, डीएनएस डोमेन नाम और केर्बोरस राइम नाम का मिलान होना चाहिए (अपर केस में निर्दिष्ट किए जाने वाले केर्बोरस क्षेत्र नाम से अलग)। उन्हें मैच नहीं करना पड़ता है, लेकिन जब वे मैच नहीं करते हैं, तो यह कठिन परिमाण के लिए समस्या निवारण आदेश बनाता है।

चूंकि आपने स्पष्ट किया है कि आपका AD डोमेन नाम abc.mycompany.com , मैं एक krb5.conf फ़ाइल का उपयोग करने का सुझाव देता हूं जो इस तरह दिखता है:

[libdefaults]
    default_realm = ABC.MYCOMPANY.COM
    default_keytab_name = FILE:C:\IBM\WebSphere\AppServer\kerberos\MyServer.keytab
    default_tkt_enctypes = rc4-hmac des-cbc-md5
    default_tgs_enctypes = rc4-hmac des-cbc-md5
    permitted_enctypes = rc4-hmac des-cbc-md5
    forwardable  = true
    renewable  = true
    noaddresses = true
    clockskew  = 300
[realms]
    ABC.MYCOMPANY.COM = {
        kdc = TEST.abc.mycompany.com:88
        default_domain = abc.mycompany.com
    }
[domain_realm]
    .abc.mycompany.com = ABC.MYCOMPANY.COM
   abc.mycompany.com = ABC.MYCOMPANY.COM

संदर्भ: सशक्त संचार मजबूत एन्क्रिप्शन एल्गोरिदम का उपयोग कर

SPNs

सभी एसपीएन को किसी दिए गए केर्बेरोस क्षेत्र में अद्वितीय होना चाहिए। डुप्लिकेट एसपीएन की स्थिति में, एडी खातों को खोजने के लिए नीचे दिए गए आदेश को डुप्लिकेट एसपीएन पंजीकृत किया गया है, और एसपीएन को उस खाते से निकालने के लिए जो एसपीएन का उपयोग नहीं किया जा रहा है। इसके लिए संकेत, यह है कि एडी खाते में एसपीएन किटैट के निर्माण के साथ ही एकमात्र ऐसा स्थान है जहां एसपीएन पंजीकृत होना चाहिए। इसलिए इस मामले के लिए, केवल विज्ञापन खाता था माइस्सेर में एसपीएन HTTP / TEST.abc.mycompany.com होना चाहिए। निर्देशिका में सभी डुप्लिकेट SPN को खोजने के लिए, एक Windows कमान शेल में निम्न कंप्यूटर को AD डोमेन से जुड़ने पर चलाएं:

setspn -X

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

setspn -D HTTP/TEST.abc.mycompany.com wasMyServer

... एक विज्ञापन खाता नाम से एक डुप्लिकेट SPN निकाल देगा। या आप इसे विज्ञापन उपयोगकर्ताओं और कंप्यूटर जीयूआई के भीतर भी हटा सकते हैं। कुंजीट को फिर से बनाने से पहले हर बार एडी खाते को साफ करने के लिए उपरोक्त आदेश को चलाएं।

Keytab

  1. जब भी आप कीटैब को बदलते हैं, तब भी वेबस्पेयर एप्लिकेशन सेवा को पुनरारंभ करें
  2. निम्नलिखित कमांड चलाकर WAS सर्वर पर कीटैब की पुष्टि करें। सत्यापन केडीसी से एक केर्बोरस टिकट खींचता है, यदि यह सफल होता है, तो इसका मतलब है कि केटाब में कुछ भी गलत नहीं है

kinit -k -t MyServer.keytab HTTP / TEST.abc.mycompany.com

नोट: किनीट विंडोज के साथ नहीं आती है, लेकिन यह जावा जेआरई / जेडीके के साथ आता है, इसलिए आपको एक ही निर्देशिका में कीटैब की प्रतिलिपि रखना होगा जहां किनीट मौजूद है या अन्यथा यह सुनिश्चित करें कि <JAVA HOME> सिस्टम में है PATH आदेश को सफलतापूर्वक चलाने के लिए

वेब ब्राउज़र

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

इंटरनेट एक्स्प्लोरर:

  1. इंटरनेट विकल्प चुनकर इंटरनेट विकल्प को खोलें, या तो इंटरनेट विकल्प चुनकर या तो नियंत्रण कक्ष से या Internet Explorer में उपकरण मेनू से।
  2. इंटरनेट विकल्प संवाद बॉक्स में, सुरक्षा टैब पर, स्थानीय इंट्रानेट का चयन करें, और उसके बाद कस्टम स्तर पर क्लिक करें।
  3. सुरक्षा सेटिंग्स संवाद बॉक्स में, लॉगऑन के अंतर्गत, "केवल इंट्रानेट ज़ोन में स्वचालित लॉगऑन" का चयन करें, और उसके बाद OK पर क्लिक करें।
  4. स्थानीय इंट्रानेट के साथ सुरक्षा सेटिंग्स टैब पर इंटरनेट विकल्प संवाद बॉक्स में अभी भी चयनित, साइटें क्लिक करें
  5. स्थानीय इंट्रानेट संवाद बॉक्स में, उन्नत क्लिक करें।
  6. अगले संवाद बॉक्स में (स्थानीय इंट्रानेट भी शीर्षक), "वेब साइट को इस क्षेत्र में जोड़ें" बॉक्स में और फिर अपनी वेब साइट का यूआरएल (उदाहरण के लिए, http://test.abc.mycompany.com ) टाइप करें, और फिर जोड़ें क्लिक करें
  7. स्थानीय इंट्रानेट संवाद में, बॉक्स ठीक क्लिक करें।
  8. मूल स्थानीय इंट्रानेट संवाद बॉक्स में, ठीक क्लिक करें।
  9. उन्नत टैब के अंतर्गत, यह सुनिश्चित करें कि "एकीकृत विंडोज प्रमाणीकरण सक्षम करें" सक्षम है (यह डिफ़ॉल्ट है)।
  10. इंटरनेट विकल्प संवाद बॉक्स में, ठीक क्लिक करें।

संदर्भ: स्वचालित लॉगऑन के लिए इंटरनेट एक्सप्लोरर को कॉन्फ़िगर करना





spnego