एकाधिक डोमेन पर एकल साइन [बंद]


110

हमारी कंपनी के पास प्रत्येक डोमेन पर होस्ट की गई एक वेबसाइट के साथ कई डोमेन स्थापित हैं। इस समय, प्रत्येक डोमेन का अपना प्रमाणीकरण होता है जो कुकीज़ के माध्यम से किया जाता है।

जब कोई एक डोमेन पर लॉग इन करता है, तो उसे दूसरे से कुछ भी एक्सेस करने की जरूरत होती है, यूजर को दूसरे डोमेन पर मौजूद दूसरी वेबसाइट पर अलग-अलग क्रेडेंशियल्स का उपयोग करके फिर से लॉग इन करना पड़ता है।

मैं (SSO) पर सिंगल साइन की ओर बढ़ने की सोच रहा था, ताकि इस परेशानी को खत्म किया जा सके। मैं किसी भी विचार की सराहना करूंगा कि यह कैसे प्राप्त किया जा सकता है, क्योंकि मुझे इस संबंध में कोई अनुभव नहीं है।

धन्यवाद।

संपादित करें: वेबसाइटें इंटरनेट (बाहरी) और इंट्रानेट (कंपनी के भीतर आंतरिक) का मिश्रण हैं।


यह ओपनआईडी के लिए एक नौकरी की तरह लगता है - लेकिन केवल आपके साइन-इन डोमेन से आईडी की अनुमति दें।
नील

2
@Will यह सवाल एसई नेटवर्क में इस वेबसाइट के लिए नहीं हो सकता है, लेकिन निश्चित रूप से रचनात्मक है
बिनर वेब

@BinarWeb क्लोज़ कारण 2008 से विकसित हुए हैं। इसके बाद, यह सबसे लागू विकल्प था।

जवाबों:


91

एसएसओ समाधान जो मैंने यहां लागू किया है वह निम्नानुसार काम करता है:

  1. एक मास्टर डोमेन है, script.mydomain.com स्क्रिप्ट मास्टर_login.php के साथ जो लॉगिन का प्रबंधन करता है।
  2. प्रत्येक क्लाइंट डोमेन में स्क्रिप्ट client_login.php होता है
  3. सभी डोमेन में एक साझा उपयोगकर्ता सत्र डेटाबेस है।
  4. जब क्लाइंट डोमेन को उपयोगकर्ता को लॉग इन करने की आवश्यकता होती है, तो यह मास्टर डोमेन (login.mydomain.com/master_login.php) पर रीडायरेक्ट करता है। यदि उपयोगकर्ता ने मास्टर में प्रवेश नहीं किया है तो वह उपयोगकर्ता से प्रमाणीकरण का अनुरोध करता है (यानी। लॉगिन पेज प्रदर्शित करें)। उपयोगकर्ता प्रमाणित होने के बाद यह एक डेटाबेस में एक सत्र बनाता है। यदि उपयोगकर्ता पहले से ही प्रमाणित है तो यह डेटाबेस में उनके सत्र आईडी को देखता है।
  5. मास्टर डोमेन सत्र आईडी पास करने वाले क्लाइंट डोमेन (client.mydomain.com/client_login.php) पर लौटता है।
  6. क्लाइंट डोमेन मास्टर से सत्र आईडी संग्रहीत करते हुए एक कुकी बनाता है। क्लाइंट सत्र आईडी का उपयोग करके साझा डेटाबेस को क्वेरी करके उपयोगकर्ता में लॉग इन का पता लगा सकता है।

टिप्पणियाँ:

  • सत्र आईडी RFC 4122 से एल्गोरिथ्म के साथ उत्पन्न एक अद्वितीय वैश्विक पहचानकर्ता है
  • Master_login.php केवल अपने श्वेतसूची में डोमेन पर पुनर्निर्देशित करेगा
  • मास्टर और क्लाइंट विभिन्न शीर्ष स्तर के डोमेन में हो सकते हैं। उदाहरण के लिए। client1.abc.com, client2.xyz.com, login.mydomain.com

यह एक अच्छा समाधान ग्रोम जैसा दिखता है। क्या आप डेटाबेस में स्टोर करते हैं? क्या यह (session_id, उपयोगकर्ता नाम, hashed_password) है?
जॉन एम

3
मास्टर डोमेन login.mydomain.com नीचे जाने पर आप केस को कैसे संभालेंगे? क्या उस बिंदु पर लॉगिन असंभव है?
jjxtra

3
किसी भी शरीर ने किसी भी कोड के उदाहरण या एक गितुब रेपो का उत्पादन किया?
जोशुआ एफ। राउत्री

यह लगभग सभी एसएसओ प्रोटोकॉल (जैसे एसएएमएल) निर्दिष्ट करता है, लेकिन फिर से खेलना हमलों और इतने पर सुरक्षा के साथ।
cweiske

2
यदि वे उपयोगकर्ता डेटाबेस साझा नहीं करते हैं तो क्या होगा? प्रत्येक भागीदार वेब ऐप का अपना उपयोगकर्ता आधार है। हम इसका सामना कैसे करेंगे?
स्टैक्डओवरफ्लो

33

पहिया का फिर से आविष्कार न करें। JOSSO, OpenSSO, CAS, Shibboleth और अन्य जैसे कई ओपन सोर्स क्रॉस-डोमेन SSO पैकेज हैं। यदि आप Microsoft प्रौद्योगिकी का उपयोग पूरे (IIS, AD) में कर रहे हैं, तो आप इसके बजाय microsoft फेडरेशन (ADFS) का उपयोग कर सकते हैं।


4
बिल्कुल - मैंने बहुत से लोगों को अपने स्वयं के सुरक्षा समाधानों को रोल करने के लिए केवल यह देखने के लिए देखा है कि वे फिर से खेलना, XSRF या अन्य हमलों के लिए असुरक्षित हैं

5
+1 आपको [लगभग] सुरक्षा पहिये को मजबूत नहीं करना चाहिए।
मार्क ई। हासे

13
OpenSSO मर चुका है और JOSSO और CAS JAVA समाधान हैं। बस एक FYI करें
OneHoopyFrood

15

होस्ट नाम कितने अलग हैं?

ये होस्ट कुकीज़ साझा कर सकते हैं:

  • mail.xyz.com
  • www.xyz.com
  • logon.xyz.com

लेकिन ये नहीं हो सकते:

  • abc.com
  • xyz.com
  • www.tre.com

पूर्व मामले में आप एक कुकी-आधारित समाधान को धमाका कर सकते हैं। GUID और डेटाबेस सत्र तालिका के बारे में सोचें।


2

यदि आप सक्रिय निर्देशिका का उपयोग करते हैं तो आपके पास प्रमाणीकरण के लिए प्रत्येक एप्लिकेशन AD का उपयोग कर सकता है, लॉगिन तब सहज हो सकता है।

अन्यथा, यदि एप्लिकेशन पर्दे के पीछे एक-दूसरे से बात कर सकते हैं, तो आप सेशन का उपयोग कर सकते हैं और आपके सभी अन्य एप्लिकेशनों की सेवा करने वाली आईडी पीढ़ी को संभालने वाला एक ऐप है।


2
क्या उपयोगकर्ता को अभी भी domain1.com और domain2.com और domain3.com पर उपयोगकर्ता नाम और पासवर्ड दर्ज नहीं करना है, जब वह इस सत्र के लिए पहली बार उन साइटों पर लैंड करता है?
HaBo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.