दिलचस्प पोस्ट
java.lang.OutOfMemoryError: मेवेन में जावा हीप स्पेस पायथन का उपयोग कर डायरेक्टरी आकार की गणना कर रहा है? कैसे जावा में एक सापेक्ष पथ को परिभाषित करें पुस्तकालय को स्थायी रूप से लिंक करने के लिए सीधे जीसीसी को बताएं जावा 8: स्ट्रीम बनाम स्ट्रीम के प्रदर्शन App.config में कस्टम कॉन्फ़िग अनुभाग कैसे बनाएं? कैसे जाँचने के लिए कि कर्ल सक्षम या अक्षम है जब आप thread.start () के बजाय java के thread.run () को कॉल करेंगे? सभी जावास्क्रिप्ट त्रुटियों को पकड़ो और उन्हें सर्वर पर भेजें मूल्यों को स्टोर करने, लाने और संपादित करने के लिए एंड्रॉइड में साझा किए गए पन्नों का उपयोग कैसे करें एक ही मॉडल पर एकाधिक एसोसिएशन के साथ रेलवे पॉलीमॉर्फिक एसोसिएशन का उपयोग करने के लिए -रेनकाउंट कब? मैं PHP में पाठ से रिक्त पंक्ति कैसे निकालूं? JSON को सीएसवी / एक्सएलएस परिवर्तित करना? जैक्सन जे एससन के साथ: अपरिचित क्षेत्र, जिसे अनावश्यक रूप से चिह्नित नहीं किया गया

क्रॉस डोमेन लॉगिन – एक डोमेन से दूसरे स्थानांतरित होने पर किसी उपयोगकर्ता को स्वचालित रूप से कैसे लॉगिन किया जाए

हम कई ऑनलाइन सेवाओं की पेशकश करते हैं हमें एक ऐसी प्रणाली विकसित करने की ज़रूरत है जो उपयोगकर्ताओं के लिए त्वरित / सरल अनुभव प्रदान करती है अगर उन्हें एक सेवा ( domain1.com पर) से दूसरे सेवा ( domain2.com पर) में स्थानांतरित किया जाता है।

क्या एक उपयोगकर्ता को स्वचालित रूप से लॉगिन करने के लिए एक सुरक्षित और सुरक्षित तरीके से एक बार वह नई सेवा में स्थानांतरित हो गया है?

मुझ पर येल अगर नीचे का समाधान पूरी तरह से असुरक्षित / गलत है

हम एक ऐसी प्रणाली पर विचार कर रहे थे जो कई तरह की ऑनलाइन सेवाओं से पासवर्ड वसूली के लिए उपलब्ध कराई गई थीं – उन्हें एक विशिष्ट हैश के साथ एक लिंक ईमेल किया जाता है, जो कि उन्हें अपना पासवर्ड बदलने की अनुमति देता है

domain1.com एक अद्वितीय हैश उत्पन्न करेगा और इसे एक डेटाबेस में हैश के साथ उपयोगकर्ता से जुड़ा हुआ डेटटाइम फ़ील्ड के साथ संग्रहीत करेगा।

उपयोगकर्ता को domain2.com/auto/?hash=d41d8cd98f00b204e9800998ecf8427e स्थानांतरित कर दिया जाएगा

domain2.com अगले उपयोगकर्ता के बारे में जानकारी प्राप्त करने के लिए हैश के साथ domain1.com एक अनुरोध करेगा। domain1.com तब डेटाबेस से हैश निकाल देगा। domain2.com उपयोगकर्ता में प्रवेश करेगा और कुकी आदि सेट करेगा।

क्या ओपनआईड या ओअथ पर आधारित कुछ समान परिणाम प्राप्त कर सकते हैं?

वेब के समाधान से एकत्रित समाधान "क्रॉस डोमेन लॉगिन – एक डोमेन से दूसरे स्थानांतरित होने पर किसी उपयोगकर्ता को स्वचालित रूप से कैसे लॉगिन किया जाए"

एकल साइन-ऑन (एसएसओ) संकल्पनात्मक रूप से बहुत सरल है

  • उपयोगकर्ता domain1.com हिट करता है
  • domain1.com देखता है कि कोई सत्र कुकी नहीं है
  • domain1.com sso.com रीडायरेक्ट sso.com
  • sso.com लॉगिन पृष्ठ प्रस्तुत करता है, और क्रेडेंशियल ले
  • sso.com उपयोगकर्ता के लिए सत्र कुकी सेट करता है
  • sso.com फिर वापस domain1 पर एक विशेष यूआरएल (जैसे domain1.com/ssologin )
  • ssologin यूआरएल में एक पैरामीटर होता है जो मूल रूप से sso.com द्वारा "हस्ताक्षरित" होता है। यह एक साझा गुप्त कुंजी का उपयोग कर लॉगिन को एन्क्रिप्ट करने के आधार64 के रूप में सरल हो सकता है।
  • domain1.com एन्क्रिप्टेड टोकन लेता है, इसे डिक्रूट करता है, उपयोगकर्ता में लॉग इन करने के लिए नया लॉगिन आईडी का उपयोग करता है।
  • domain1 उपयोगकर्ता के लिए सत्र कुकी सेट करता है

अब, अगले मामले

  • उपयोगकर्ता domain2.com हिट करता है, जो domain1 और domain1 रीडायरेक्ट sso.com
  • sso.com पहले से ही उपयोगकर्ता के लिए एक कुकी है, इसलिए प्रवेश पृष्ठ प्रस्तुत नहीं करता है
  • sso.com वापस encrypted जानकारी के साथ domain2.com पुनर्निर्देशित करता है
  • domain2.com उपयोगकर्ता में लॉग करता है

यह कैसे काम करता है की बुनियादी बातों है आप इसे और अधिक मजबूत, अधिक समृद्ध सुविधा बना सकते हैं (उदाहरण के लिए, यह एसएसओएन है , लेकिन एसएसओफ़ नहीं है, उपयोगकर्ता डोमेन 1 का "लॉग आउट" कर सकता है, लेकिन अभी भी domain1 domain2 में लॉग इन किया जाता है)। आप क्रेडेंशियल हस्ताक्षर करने के लिए सार्वजनिक कुंजी का उपयोग कर सकते हैं, आप SSO सर्वर से अधिक जानकारी (जैसे प्राधिकरण अधिकारों आदि) को स्थानांतरित करने के लिए अनुरोध कर सकते हैं आप अधिक अंतरंग एकीकरण कर सकते हैं, जैसे कि डोमेन नियमित रूप से जांचते हुए कि उपयोगकर्ता के पास अब भी एसएसओ सर्वर से अधिकार हैं।

लेकिन रीडायरेक्ट का उपयोग कर ब्राउजर के जरिये कुकी हाथ मिलाना महत्वपूर्ण नींव है, जिस पर इन सभी एसएसओ समाधान आधारित हैं।

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

मैं जैक पर मध्य जासूसी में आदमी खेल रहा हूँ। जैक domain1.com तक पहुँचता है जो एक हैश तैयार करता है और उसे भेजा जाता है ताकि जब वह domain2.com पहुंच जाए तो वह हैश प्रमाणीकरण के रूप में भेज सकता है। जैसे ही वह domain1.com तक पहुंचता है, उसका अनुरोध मेरे माध्यम से आता है, आप पृष्ठ लौटते हैं, मैंने हैश को पकड़ लिया और उसे आगे बढ़ाया। मैं हैश का उपयोग करके domain2.com का उपयोग करता हूं, आपने अब मुझे domain2.com और हैश हटा दिया है I जब तक वह domain2.com पर लॉग इन करने का प्रयास नहीं करता है, तब तक वह बुद्धिमान व्यक्ति नहीं है और उसे बताया गया है कि उसकी पहचान मान्य नहीं रह गई है।

आप इसे कैसे दूर करते हैं?

जब तक आप संपूर्ण सत्र के लिए SSL का उपयोग नहीं करते हैं, तब तक क्रॉस-डोमेन लॉगिन के लिए एसएसएल का उपयोग करने का कोई मतलब नहीं होगा। सत्र कुकी को चोरी करना उतना ही आसान है क्योंकि यह किसी यूआरएल में हैश का उपयोग करना है। एसएसएल में हैश छिपाने का क्या मतलब है यदि शेष सत्र असुरक्षित है।

शीर्ष पर दिए गए विधि बहुत ज्यादा मानक विधि है चाहे आप सुरक्षित प्रोटोकॉल का उपयोग करना चुनते हैं, एक और बात पूरी तरह से है, लेकिन सत्र के केवल एन्क्रिप्ट वाले हिस्से के लिए यह बेमतलब होगा।

यह एक अच्छा समाधान है इस पर विचार करने के लिए दो बिंदु हैं:

आप "हैश" शब्द का उपयोग करते हैं, लेकिन यह स्पष्ट नहीं है कि आपके पास कौन से डेटा होगा इसके बजाय, एक "नॉन" का उपयोग करें: क्रिप्टोग्राफिक गुणवत्ता RNG द्वारा उत्पन्न एक बड़ी (128-बिट) संख्या

साथ ही, आपने इसे निर्दिष्ट नहीं किया है, लेकिन उपयोगकर्ता और दोनों डोमेन के बीच और डोमेन के बीच संचार सुरक्षित होना चाहिए। सर्वर को प्रमाणित करने और गोपनीय रखने के लिए SSL का उपयोग करें।

एसईओ के बारे में क्या? ऐसा लगता है कि succesfull लॉगिन से पहले प्रत्येक अनुरोध को अन्य डोमेन पर वापस ले लिया जाता है और वापस। मैं कहूंगा कि यह बहुत बदसूरत है। क्या हेडर आपको भेजना चाहिए? 301 से एसएसओ और फिर मूल पृष्ठ पर वापस 301? तो खोज बॉक्स को उस पृष्ठ के लिए अपने सूचकांक में दो बार बदलने के लिए "अनुरोध" किया गया है?