हम जावा केर्बेरोज टिकट कैश का उपयोग कर जावा एप्लिकेशन में एकल साइन ऑन सक्षम करने के लिए जेएएएस का उपयोग कर रहे हैं। हमारे jaas.conf कॉन्फ़िग फ़ाइल इस तरह दिखता है:जावा में किसी सर्वर के विरुद्ध केर्बेरोज टिकट को कैसे सत्यापित करें?
LoginJaas {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
doNotPrompt=true
debug=true;
};
इस के साथ
, हम एक Jaas LoginContext बना सकते हैं और सफलतापूर्वक उपयोगकर्ता के करबरोस टिकट मिलता है। हम इस टिकट को जेएमआई का उपयोग कर सर्वर एप्लिकेशन पर भेजते हैं। हम जो भी करने के लिए प्रबंधन नहीं करते हैं, वह सर्वर पर सत्यापित करना है कि केर्बेरोज टिकट वास्तव में हमारी सक्रिय निर्देशिका द्वारा बनाया गया था।
फिलहाल, हम यह जांच कर टिकट की एक बहुत ही असुरक्षित सत्यापन करते हैं कि सर्वर प्रिंसिपल (KerberosTicket.getServer()) नाम का दायरा हिस्सा हमारे डोमेन नाम में है। लेकिन निश्चित रूप से, कोई भी एक ही क्षेत्र के नाम के साथ अपना खुद का केर्बेरोज सर्वर स्थापित कर सकता है और एप्लिकेशन को शुरू करने के लिए उस टिकट का उपयोग कर सकता है।
एक विचार जो मैंने पाया है वह केर्बेरोज टिकट का उपयोग कर सक्रिय निर्देशिका एलडीएपी के खिलाफ प्रमाणित करना था। दुर्भाग्यवश, हम विंडोज 7 का उपयोग करते हैं और रजिस्ट्री प्रविष्टि सेट करते समय केवल एलडीएपी के खिलाफ प्रमाणित करने के लिए केर्बेरोज टिकट का पुनः उपयोग करते हैं (http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html देखें, allowtgtsessionkey के लिए खोजें)। यह हमारे उपयोगकर्ताओं के लिए अस्वीकार्य है।
क्या हमारे सक्रिय निर्देशिका सर्वर के खिलाफ टिकट को सत्यापित करने का कोई तरीका है? मुझे संदेह है कि यह जांचने का एक तरीका है कि क्या KerberosTicket.getServer() टिकट हमारे सर्वर के टिकट के बराबर है, लेकिन मुझे नहीं पता कि यह कैसे करना है। अद्यतन: केर्बेरोज टिकट()। GetServer() केवल एक केर्बेरोज प्रिंसिपल देता है जिसमें सर्वर टिकट नाम और दायरे के अलावा कुछ भी नहीं है, इसलिए यह सत्यापन के लिए उपयुक्त नहीं है।
आपकी मदद के लिए धन्यवाद, MEMMINGER
क्या आपने कभी इसे समझ लिया था? –