यहां Windows Server 2012 R2 पर चल रही IIS वेबसाइट पर ट्रांसपेरेंट SSO (सिंगल साइन-ऑन) केरबेरोस डोमेन यूजर ऑथेंटिकेशन कॉन्फिगर करने के लिए चरण-दर-चरण गाइड है।
अपने वेब सर्वर पर IIS मैनेजर शुरू करें, आवश्यक वेबसाइट चुनें और Authentication सेक्शन पर जाएं। जैसा कि आप देख सकते हैं, डिफ़ॉल्ट रूप से केवल Anonymous Authentication सक्षम है। इसे अक्षम करें और Windows Authentication सक्षम करें (सबसे पहले IIS हमेशा अनाम ऑथेंटिकेशन करने का प्रयास करता है)।
Windows ऑथेंटिकेशन के लिए उपलब्ध प्रोवाइडर्स की सूची खोलें (Providers)। डिफ़ॉल्ट रूप से, दो प्रोवाइडर उपलब्ध हैं: Negotiate और NTLM। Negotiate एक कंटेनर है जो केरबेरोस को पहली ऑथेंटिकेशन विधि के रूप में उपयोग करता है, और यदि ऑथेंटिकेशन विफल होता है, तो NTLM का उपयोग किया जाता है। यह आवश्यक है कि Negotiate प्रोवाइडर्स की सूची में पहले आए।
अगले चरण में उस वेबसाइट के नाम के लिए सर्विस प्रिंसिपल नेम (SPN) एंट्रीज का रजिस्ट्रेशन शामिल है जिसे यूजर्स द्वारा एक्सेस किया जाएगा। यदि IIS वेबसाइट को केवल उस सर्वर के नाम से उपलब्ध होना है जिस पर यह स्थित है (https://server-name या https://server-name.adatum.loc), तो आपको अतिरिक्त SPN एंट्रीज बनाने की आवश्यकता नहीं है (SPN एंट्रीज पहले से ही AD में सर्वर अकाउंट में मौजूद हैं)। यदि वेबसाइट एड्रेस होस्ट नाम से भिन्न है या यदि आप लोड बैलेंसिंग के साथ एक वेबफार्म बना रहे हैं, तो आपको अतिरिक्त SPN एंट्रीज को सर्वर या यूजर अकाउंट से जोड़ना होगा।
मान लीजिए, हमारे पास IIS सर्वर्स का एक फार्म है। इस मामले में, एक अलग AD अकाउंट बनाना और SPN एंट्रीज को इससे बांधना बेहतर है। हमारी वेबसाइट का टारगेट एप्लिकेशन पूल इस अकाउंट से शुरू होगा।
iis_service डोमेन अकाउंट बनाएं। सुनिश्चित करें कि इस ऑब्जेक्ट के लिए SPN एंट्रीज असाइन नहीं की गई हैं (servicePrincipalName एट्रिब्यूट खाली है)।
मान लीजिए, वेबसाइट को https://webportal और https://webportal.adatum.loc पर प्रतिक्रिया देनी है। हमें इन एड्रेस को सर्विस अकाउंट के SPN एट्रिब्यूट में निर्दिष्ट करना होगा।
Setspn /s HTTP/webportal adatum\iis_service
Setspn /s HTTP/webportal.adatum.loc adatum\iis_service
इस प्रकार, हम इस अकाउंट को केरबेरोस टिकट्स को डिक्रिप्ट करने की अनुमति देते हैं, जब यूजर्स इन एड्रेस को एक्सेस करते हैं, और सेशंस को प्रमाणित करते हैं।
आप अकाउंट की SPN सेटिंग्स को इस तरह जांच सकते हैं:
setspn /l iis_service
setspn –x
अगला कदम पहले बनाए गए अकाउंट से लॉन्च करने के लिए IIS एप्लिकेशन पूल का कॉन्फिगरेशन है।
अपनी वेबसाइट का एप्लिकेशन पूल चुनें (हमारे उदाहरण में, यह DefaultAppPool है)।
Advanced Settings खोलें और Identity पर जाएं।
इसे ApplicationPoolIdentity से adatum\iis_service में बदलें।
फिर IIS मैनेजर में अपनी वेबसाइट पर जाएं और Configuration Editor चुनें।
ड्रॉपडाउन मेनू में system.webServer > security > authentication > windowsAuthentication चुनें।
useAppPoolCredentials को True में बदलें।
इस प्रकार हम IIS को क्लाइंट्स से केरबेरोस टिकट्स डिक्रिप्ट करने के लिए डोमेन अकाउंट का उपयोग करने की अनुमति देते हैं।
इस कमांड का उपयोग करके IIS रीसेट करें:
iisreset
यही सभी वेब फार्म सर्वर्स पर कॉन्फिगर करना होगा।
आइए केरबेरोस ऑथेंटिकेशन का टेस्ट करें। ऐसा करने के लिए, क्लाइंट के ब्राउज़र में https://webportal.adatum.loc खोलें।
नोट. मेरे मामले में, मैं IE11 में तुरंत ऑथेंटिकेट नहीं कर सका। मुझे एड्रेस को विश्वसनीय वेबसाइट्स की सूची में जोड़ना पड़ा और Trusted Zones Sites सेटिंग्स में User Authentication -> Logon में Automatic logon with current user name and password निर्दिष्ट करना पड़ा।आप Fiddler का उपयोग करके HTTP ट्रैफिक की निगरानी करके सुनिश्चित कर सकते हैं कि आपकी वेबसाइट पर केरबेरोस ऑथेंटिकेशन उपयोग किया जाता है (हमने पहले इस टूल का उल्लेख किया था)।
Fiddler शुरू करें और ब्राउज़र में टारगेट वेबसाइट खोलें। विंडो के बाएं हिस्से में, वेबसाइट एक्सेस की लाइन ढूंढें। विंडो के दाएं हिस्से में Inspectors टैब पर जाएं। लाइन “Authorization Header (Negotiate) appears to contain a Kerberos ticket” दर्शाती है कि IIS वेबसाइट पर ऑथेंटिकेशन के लिए केरबेरोस का उपयोग किया गया है।