2009-07-31 9 views
6

.net एप्लिकेशन में सिंगल साइन ऑन को लागू करने का सबसे अच्छा समाधान क्या है? मैंने गुमराह किया है और कुछ समाधान पाये हैं लेकिन मैं उन समाधानों से बहुत आश्वस्त नहीं हूं।.Net में एकल साइन इन को कैसे कार्यान्वित करें?

वेबसाइट 1 पर उपयोगकर्ता लॉग और फिर वेबसाइट 2 पर ले जाता है। वेबसाइट 2 कैसे पता चलेगा कि उपयोगकर्ता लॉग इन है? मुझे लगता है कि यूआरएल में कुछ टोकन पास करके, जिसे वैधता के लिए डेटाबेस 2 में वेबसाइट 2 द्वारा चेक किया जाएगा। इसका मतलब है कि मुझे वेबसाइट 1 में सभी यूआरएल को मार्शल करना होगा जो वेबसाइट 2 पर ले जाता है?

दूसरा अगर उपयोगकर्ता वेबसाइट 2 को 1 घंटे के लिए ब्राउज़ करना जारी रखता है और फिर वेबसाइट 1 पर जाता है। उस समय तक वेबसाइट 1 सत्र का समय समाप्त हो गया है ताकि उपयोगकर्ता लॉगिन पृष्ठ देख सके, है ना? लेकिन कार्यक्षमता पर एकल संकेत के अनुसार यह व्यवहार गलत है।

+0

यह सिंगल प्रमाणीकरण है और एकल साइन ऑन नहीं है, आपको उसी प्रमाणीकरण वाले एन साइटों के लिए एन बार साइन इन करना होगा। –

+0

आपको प्रमाणीकरण और प्रमाणीकरण के बीच अंतर करना चाहिए। आप किसी ऐसे उपयोगकर्ता को अधिकृत कर सकते हैं जिसका अर्थ है कि आप जानते हैं कि वे कौन हैं, जिनके बारे में वे दावा करते हैं, लेकिन आपको अभी भी उस उपयोगकर्ता को अधिकृत करने की आवश्यकता है, अपनी 2 वेब साइटों में से किसी एक पर, वे सामग्री तक पहुंच सकते हैं और प्रत्येक साइट पर नहीं पहुंच सकते हैं। टोकन समाप्त हो जाएगा लेकिन आम तौर पर पहुंच बनाए रखने के लिए ताज़ा किया जा सकता है। – htm11h

उत्तर

14

मुझे लगता है कि आप गलत समझ रहे हैं कि एकल साइन-ऑन कैसे काम करता है।

वेबसाइट 1 और वेबसाइट 2 पर विचार करें जो एकल साइनऑन का उपयोग करना चाहते हैं।

पहचान प्रदाता पर एक लॉगिन वेबसाइट बनाई गई है। यह एकमात्र ऐसा स्थान है जहां लॉगऑन स्क्रीन दिखाई देती है।

जब उपयोगकर्ता वेबसाइट 1 पर जाता है और वेबसाइट लॉगिन करने का विकल्प चुनता है तो उपयोगकर्ता पहचान प्रदाता पर लॉगऑन स्क्रीन पर भेजता है। उपयोगकर्ता पहचान प्रदाता पर लॉग ऑन करता है जो अपने डोमेन के लिए अपनी लॉगिन कुकी छोड़ देता है (और शायद उपयोगकर्ता को उनकी प्रमाणीकरण जानकारी सहेजने की अनुमति देता है ताकि उन्हें कभी भी संकेत नहीं दिया जा सके)। इसके बाद ब्राउज़र को वापस वेबसाइट 1 पर रीडायरेक्ट किया जाता है जिसमें वेबसाइट 1 क्रैक खोलने के अनुरोध में टोकन शामिल है, पहचान जानकारी प्राप्त होती है और इसकी अपनी लॉगिन बिट्स (इसे अपनी खुद की प्रमाणीकरण कुकी छोड़ती है जो इसे चाहती है) छोड़ देती है।

तब उपयोगकर्ता वेबसाइट 2 पर जाता है और लॉगऑन का चयन करता है। वेबसाइट 2 उपयोगकर्ता को पहचान प्रदाता के लिए उछालता है, जो पहले से ही जानता है कि उपयोगकर्ता कौन है और, यदि उपयोगकर्ता ने अपनी लॉगिन जानकारी को सहेजना चुना है, तो चुपचाप प्रमाणित करता है और फिर वेबसाइट 2 पर वापस दूसरे टोकन के साथ रीडायरेक्ट करता है जो वेबसाइट 2 क्रैक खुले होते हैं और फिर अपनी लॉगिन बिट्स करते हैं।

वहाँ उसके चारों ओर सुरक्षा का एक समूह, विशेष रूप से वेबसाइटों के लिए टोकन सीमित, केवल अनुमति देता है टोकन आदि आदि

अपनी चिंताओं

तो पता करने के लिए
  1. उपयोगकर्ता पर लॉग श्वेतसूची वाले वेब साइटों के लिए भेजा जाना है वेबसाइट 1 और फिर वेबसाइट 2 पर ले जाता है। वेबसाइट 2 कैसे पता चलेगा कि उपयोगकर्ता लॉग इन है? यह नहीं है वेबसाइट 2 को पहले एकल साइनऑन साइट से प्रमाणीकरण जानकारी का अनुरोध करना होगा।
  2. इसका मतलब है कि मुझे वेबसाइट 1 में सभी यूआरएल को मार्शल करना होगा जो वेबसाइट 2 पर ले जाता है? नहीं, जब तक आप वेबसाइट 1 पहचान प्रदाता भी नहीं बनाते। फिर भी यह दर्दनाक होगा, यदि टोकन आवश्यक है तो वेबसाइट 2 को पहचानप्रोवाइडर पर वापस रीडायरेक्ट करना बेहतर होगा।
  3. दूसरा, यदि उपयोगकर्ता 1 घंटे के लिए वेबसाइट 2 ब्राउज़ करना जारी रखता है और फिर वेबसाइट 1 पर जाता है। उस समय तक वेबसाइट 1 सत्र का समय समाप्त हो गया है ताकि उपयोगकर्ता लॉगिन पृष्ठ देख सके, है ना? - यह निर्भर करता है कि आप वेबसाइट 1 को कैसे कॉन्फ़िगर करते हैं, और यह कितनी देर तक प्रमाणीकरण कुकी के लिए रहता है।
  4. लेकिन यह व्यवहार कार्यक्षमता पर एकल हस्ताक्षर के अनुसार गलत है। नहीं यह नहीं। एकल साइनऑन का मतलब यह नहीं है कि आपको एक फ़्लोटिंग टोकन मिलता है जो साइटों के बीच साझा किया जाता है। प्रत्येक वेबसाइट जो एकल साइन-ऑन का उपयोग करती है अभी भी अपनी खुद की प्रमाणीकरण कुकी बनाती है। क्या हो सकता है यदि उपयोगकर्ता वेबसाइट 1 पर वापस जाता है तो यह एक कालबाह्य प्रमाणीकरण कुकी का पता लगाता है, फिर उपयोगकर्ता को एक ही साइनऑन पेज पर भेजता है जहां उन्हें प्रमाणीकृत किया जाता है (चुपचाप) और एक नया टोकन वेबसाइट 1 पर वापस धकेल दिया जाता है जो एक नया बनाता है खुद के लिए प्रमाणीकरण कुकी।
+0

यह सिंगल प्रमाणीकरण है और एकल साइन ऑन नहीं है, आपको उसी प्रमाणीकरण वाले एन साइटों के लिए एन बार साइन इन करना होगा। –

+0

मुझे लगता है कि कदम "फिर उपयोगकर्ता वेबसाइट 2 पर जाता है और * लॉगऑन का चयन करता है *" ओपी क्या टालना चाहता है। वो कैसे संभव है? – CodeGrue

0

एमएस में कुछ साल पहले यह एक कागज पर किया उद्यम के भीतर - हम सेट अप के नमूने लेकिन असली के लिए यह लागू नहीं - Single Sign-on

+0

मैंने पहले ही उस पेपर को देखा है लेकिन यह मेरे संदेहों का उत्तर नहीं देता है। –

3

आधिकारिक माइक्रोसॉफ्ट दृष्टिकोण सक्रिय निर्देशिका फेडरेशन सेवा के माध्यम से (जो SAML लपेटता एडी प्रमाणीकरण के साथ)। इसमें वे विशेषताएं हैं जिन्हें आप ढूंढ रहे हैं - लेकिन सार्वजनिक वेब एप्लिकेशन के लिए संभवतः भारी हेवीवेट है।

3

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

दोनों एप्लिकेशन सुरक्षा टोकन को एन्कोड/डीकोड करने के लिए एक ही सार्वजनिक एन्क्रिप्शन कुंजी का उपयोग करते हैं। जैसा कि आप कहते हैं, यह ठीक काम करता है यदि आपके पास साइटों के बीच सीमित, पूर्वनिर्धारित संक्रमण लिंक हैं, लेकिन यदि आप उन ऐप्स के बीच किसी भी पृष्ठ लिंक का उपयोग करने में सक्षम होना चाहते हैं, तो आपको उन यूआरएल को फ्लाई पर उत्पन्न करने की आवश्यकता होगी ताकि उनमें टोकन हो।

टाइमआउट के साथ आप जिस तरह से निपटते हैं वह यह है कि सुरक्षा टोकन में समाप्ति समय भी होता है। आप प्रत्येक पृष्ठ अनुरोध, या जब आप ऐप्स के बीच एक नया लिंक बनाते हैं तो एक नई सुरक्षा टोकन उत्पन्न करते हैं।

आम तौर पर सुरक्षा टोकन में उपयोगकर्ता आईडी और टाइमआउट होता है और लॉगिन चेकर या तो टाइमआउट समाप्त होने पर उपयोगकर्ता आईडी या शून्य देता है।

यह ठीक से और सुरक्षित रूप से कोड करने का त्वरित समाधान नहीं है। शायद आप कोड प्रोजेक्ट पर प्री-बिल्ट एक पा सकते हैं?

1

आप अपने आवेदन के आधार पर विभिन्न एप्लिकेशन के लिए विभिन्न एसएसओ तंत्र का उपयोग कर सकते हैं।

  • मशीन कॉन्फ़िग का उपयोग

  • एकल साइन-ऑन एक दूसरी स्तरीय डोमेन

  • Cross Domains Using Common database (कार्यान्वयन हमारे द्वारा ध्यान रखा जाना चाहिए)

भीतर हालांकि, मैं "आउट-ऑफ-बॉक्स एसएसओ" लाइव, Google से सेवा देख सकता है, याहू, फेसबुक इत्यादि एसएएमएल का समर्थन करके प्रमाणीकरण प्रदान करने के लिए। यह हमें अपने स्वयं के एसएसओ सेवा कार्यान्वयन को बनाए रखने के मुद्दों से छुटकारा पाने में मदद करेगा।

आप एक बुनियादी समझ की जरूरत है कि कैसे एसएसओ कार्य, आपने इस लिंक OAuth और सामाजिक प्रदाताओं का उपयोग कर के साथ उल्लेख कर सकते हैं here

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^