2009-11-12 14 views
21

मैं ओपनआईडी में नौसिखिया हूं। मैं सोचता हूं कि विभिन्न ओपनआईडी सक्षम खातों के साथ लॉगिन करने के लिए उपयोगकर्ता को पसंद करने के लिए सबसे अच्छा अभ्यास क्या है, यह सोचने में काफी समय लगता है।ओपनआईडी: एक उपयोगकर्ता को एकाधिक ओपनआईडी खातों को सर्वोत्तम तरीके से कैसे जोड़ा जाए?

(मुझे और यह स्पष्ट करना होगा कि मेरी प्रणाली एक ऐसी प्रणाली नहीं है जिसे ब्लॉग पोस्ट करने के लिए केवल एक सरल "ऑनटाइम प्रमाणीकरण" की आवश्यकता हो, बल्कि सोशलनेटवर्किंग साइट की तरह एक पूर्ण प्रणाली है, जहां उपयोगकर्ता हमेशा और जोड़ देगा जानकारी और "अपने व्यक्तिगत खाते" के लिए मौजूदा जानकारी को संपादित करें ... इसलिए सिस्टम को किसी भी प्रकार का "खाता" होना आवश्यक है जो उपयोगकर्ता द्वारा किए गए काम से जुड़ा होगा।)

इस मामले को देखते हुए कि मैं नहीं करता "mysite के लिए पासवर्ड और उपयोगकर्ता नाम के साथ समर्पित उपयोगकर्ता खाता" बनाएं और केवल ओपनआईडी लॉग इन पर भरोसा करें, मैं निम्नलिखित समस्या में भाग गया: जब उपयोगकर्ता "ए" लॉग इन करता है (पहली बार) "Google खाता" के माध्यम से तो वह जो भी करता है Google खाते से जुड़ा होगा। जब वह वापस आता है और "Google खाता साइनइन" पर क्लिक नहीं करता है बल्कि "याहू साइनइन" पर क्लिक नहीं करता है, तो उसे साइन इन किया जाएगा, लेकिन याहू के साथ एक नया खाता बनायेगा/प्राप्त करेगा। Google खाते के साथ उन्होंने जो भी किया वह सब खो गया प्रतीत होता है। बस मेरी साइट पर प्रत्येक उपयोगकर्ता को "ओपनआईडी इंडिपेंडेंट और अनन्य उपयोगकर्ता नाम" (पासवर्ड के बिना) जारी नहीं किया जाता है: जैसे लॉग इन करते समय मैं इस अद्वितीय उपयोगकर्ता नाम (पासवर्ड के बिना) पूछता हूं, हर कोई दूसरों के उपयोगकर्ता नाम का अनुमान लगा सकता है और ओपनआईडी को जोड़ सकता है उनके साथ। लेकिन अगर मुझे इस उपयोगकर्ता नाम के लिए पासवर्ड भी रखना है, तो मैं समाप्त होने के बाद जहां हम अतीत में थे ओपनआईडी के बिना: फिर मुझे उपयोगकर्ता को किसी प्रकार का "मास्टर अकाउंट" (यूरेनम और पासवार्ट के साथ) जारी करना होगा, सुविधा के लिए, किसी भी खुले आईडी खातों के साथ सहयोग करें। लेकिन इस मामले में मुझे किस तर्क के लिए ओपनआईडी है? चूंकि उपयोगकर्ता को "मेरा मास्टरपासवर्ड और यूजरिड" याद रखना है ...

=> क्या इसका मतलब यह है कि ओपनआईडी कई खातों के "मुफ्त विकल्प" का समर्थन नहीं करता है? यदि मैं चाहता हूं कि उपयोगकर्ता एक मनमानी ओपनआईडी उपयोगकर्ता-खाते के साथ लॉगिन (प्रत्येक एकल लॉगिन के लिए) सक्षम हो, तो इसे इस तरह से करने का एकमात्र तरीका है:

1.) उपयोगकर्ता "ज्ञात ओपनआईडी खाते के माध्यम से लॉग इन करता है "=> ठीक है कि कुछ भी नहीं किया जाना चाहिए

2.) उपयोगकर्ता" अज्ञात ओपनआईडी खाता "=>" अज्ञात "ओपनआईडी (उदाहरण के लिए याहू) के माध्यम से उपयोगकर्ता को" प्रमाणित "करता है लेकिन जब उपयोगकर्ता होता है मेरे पृष्ठ पर, उपयोगकर्ता को बताएं कि यह (याहू) ओपनआईडी खाता अज्ञात है (= इसके साथ कोई और काम नहीं किया गया है = यह एक नए खाते की तरह है) और पूछें, अगर वह किसी अन्य खाते के माध्यम से आखिरी बार लॉग इन हो सकता है और समर्थित ओपनआईडी खातों की सूची प्रदान करें। उपयोगकर्ता तब उन प्रदाताओं में से एक चुन सकता है जो उन्होंने पिछली बार उपयोग किया था (उदाहरण के लिए Google)। उसके बाद वह पहले से ही लॉगिन (याहू के साथ) के अलावा, उसे "पुराने" (Google) खाते में भी लॉगिन करना होगा, जिसे उन्होंने पिछली बार इस्तेमाल किया था। दोनों खाते तब "एक-दूसरे से जुड़े होते हैं" और पुराने (Google) खाते पर किसी भी काम को अब नए (याहू) ओपनआईडी खाते/लॉगिन के माध्यम से एक्सेस किया जा सकता है?

या क्या एक USERACCOUNT के लिए "एकाधिक ओपनआईडी खाते" का समर्थन करने का कोई अन्य तरीका है?

(कारण यह है कि मैं यह क्यों पूछ रहा हूं: ओपनआईडी अभी तक सामान्य एंडुसर्स के लिए इतना ज्यादा ज्ञात नहीं है। अगर मैं Google से लॉग इन के साथ एक बड़ी सूची मुद्रित करता हूं, याहू से फेसबुक में बहुत सारे उपयोगकर्ता होंगे जो Google के लिए Google का उपयोग करेंगे प्रारंभिक लॉगिन, लेकिन अगली बार जब वे वापस आएंगे तो शायद फेसबुक चुनें (क्योंकि उन्होंने फेसबुक साइट छोड़ दी है और फेसबुक आइकन पर क्लिक करने के लिए यह अधिक आकर्षक है)। इस तरह "पिछले 15 वर्षों" के लिए "वेबसाइटें काम करती हैं": वहां था लॉगिन करने का केवल एक ही तरीका: एक उपयोगकर्ता नाम-इनपुट-फ़ील्ड और एक पासवर्ड-इनपुट फ़ील्ड। अगर मैं अब खाते की एक बड़ी सूची प्रिंट करता हूं जहां उपयोगकर्ता के पास प्रत्येक के साथ खाता है, तो दिन से अलग-अलग खातों के साथ लॉगिन करने की क्षमता दिन की समस्या को समझने के लिए यह दिन नहीं होगा। इसलिए आदर्श दुनिया यह होगी कि कोई उपयोगकर्ता मेरी ओपनआईडी-प्रदाता सूची के मनमाने ढंग से खाते के माध्यम से लॉगिन कर सकता है और सभी खातों को एक दूसरे के साथ "संबद्ध" होगा ...

मुझे उम्मीद है कि मेरी समस्या क्या है इसका वर्णन करने में मुझे सक्षम था।

मैं सच में तुम्हारी मदद की और विचारों (mybe मैं पूरी तरह से यहाँ गलत समझा रहा हूँ कुछ)

आप ज्यादा सर्वेक्षण धन्यवाद सराहना करते हैं! जनवरी

उत्तर

7

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

+0

हैलो जेरेमी, आपके उत्तर के लिए धन्यवाद। लेकिन मैं अभ्यास में कैसे एकाधिक खातों के साथ अद्वितीय पहचानकर्ता को जोड़ता हूं? ऐसा करने का एकमात्र तरीका या तो अद्वितीय पहचानकर्ता (=> के किसी भी प्रकार का पूर्ण मास्टरकाउंट होना) के लिए एक पासवर्ड जोड़ना होगा या इसे ऊपर वर्णित तरीके से करना होगा। लेकिन अगर मैं किसी प्रकार का "मास्टर अकाउंट" जारी करता हूं तो ओपनआईडी सिर्फ "मजाकिया गैजेट" है, क्योंकि उपयोगकर्ता को मेरी अनूठी पहचान और पासवर्ड याद रखना है। अन्यथा एक दूसरे के साथ "सुरक्षित रूप से" कई ओपनआईडी खातों को जोड़ने की कोई संभावना नहीं है। – jan

+0

आपका प्रमाणीकरण मॉडल केवल यही होना चाहिए: _ _ प्रमाणीकरण मॉडल_। यह निर्धारित नहीं करना चाहिए कि आप उपयोगकर्ताओं को कैसे प्रबंधित करते हैं, केवल आप उन्हें प्रमाणित कैसे करते हैं। आपको एक अद्वितीय पहचानकर्ता (यूआईडी) की आवश्यकता है जो आपको यह निर्धारित करने की अनुमति देता है कि कौन सा उपयोगकर्ता सिस्टम से कनेक्ट है। यहां तक ​​कि एसओ भी उत्पन्न यूआईडी का उपयोग करता है (उदाहरण के लिए 65228), और वे ओपनआईडी और उनके यूआईडी के बीच एक कनेक्शन स्टोर करते हैं। जिस समस्या में आप चल रहे हैं वह इसलिए है क्योंकि आप ओपनआईडी को यूआईडी के रूप में उपयोग कर रहे हैं। आज फेसबुक का उपयोग कर उपयोगकर्ता को जानने का एकमात्र तरीका वही है जिसने कल Google का उपयोग किया था, उन्हें पहले Google के साथ लॉग इन करना है। –

2

ऐसा लगता है कि आपको उपयोगकर्ता को दोनों को एक साथ जोड़ने के लिए लॉग इन करना होगा।

6

उपयोगकर्ता खातों के साथ अपने डेटाबेस में एक टेबल है, जिसमें उपयोगकर्ता आईडी शामिल है और एक लिंक तालिका है, जो एक उपयोगकर्ता आईडी के लिए ओपनआईडी को जोड़ती है।

तरह

तालिका उन

आईडी नाम

1 पीट

2 KEES

और

तालिका openid

OpenID USERID

http: // ..... 1

http: // ..... 1

http: // ... .. 2

http: // ..... 2

+0

हैलो grombeestje, आपके उत्तर के लिए धन्यवाद। यदि आप एक विशिष्ट उपयोगकर्ता के लिए खुले-आईडीटेबल के साथ उपयोगकर्ता-तालिका का सहयोग कैसे करेंगे, तो यह विस्तृत हो सकता है: जिस तरह से मैंने अपने प्रश्न में वर्णित किया है या आप किसी भी बेहतर हल करने का प्रस्ताव देते हैं? – jan

14

हाँ, उपयोगकर्ता दोनों के साथ प्रवेश करना होगा।

  1. Google खाते के साथ पहली बार उपयोगकर्ता लॉग इन करता है, ऐप का उपयोग करता है और लॉग आउट करता है। ऐप एक आंतरिक उपयोगकर्ता लॉगिन बनाता है (grombeestje के तालिका उपयोगकर्ता में) और इसे Google खाते से संबद्ध करता है। (grombeestje की तालिका openid में)
  2. बाद में, उपयोगकर्ता ने याहू खाते में लॉग इन किया है और फिर से याहू खाते के साथ लॉग इन किया है। अब उपयोगकर्ता को अन्य सेवाओं के साथ-साथ
    • ए के साथ पहचानने के लिए एक चरण की पेशकश की गई है। उपयोगकर्ता Google खाते का चयन करते हैं और चुनते हैं।
    • बी। Google खाते के साथ उपयोगकर्ता लॉग इन करता है।
    • सी। एप्लिकेशन वर्तमान लॉगिन के साथ Google आईडी संलग्न करता है।

इसके अलावा, किसी भी समय है जब उपयोगकर्ता चाहता है वह अपने प्रोफ़ाइल के लिए लॉगिन जोड़ सकते हैं और ब्लॉगर, फेसबुक आदि की तरह उसकी/उसके अन्य openIDs पहचान करने के लिए चुन सकते हैंयदि उन्होंने इन खातों के साथ अलग-अलग लॉग इन (grombeestje के टेबल उपयोगकर्ता में) बनाए हैं तो वह ऐप के साथ स्थानीय लॉग इन (grombeestje के टेबल उपयोगकर्ता में) को छोड़ सकता है या उन्हें एक में विलय कर सकता है।

+0

महान जवाब! सबसे पहले आपने वास्तव में सवाल का जवाब दिया। दूसरी बात यह है कि आप अपने अंतिम अनुच्छेद में, 2 आंतरिक खातों को विलय करने की ज़िम्मेदारी रखने के लिए एक अच्छा बिंदु लाए हैं, यदि वे प्रारंभिक लॉगिन से कुछ समय बाद एकसाथ मिलते हैं। मुझे कुछ सोचने की आवश्यकता होगी। धन्यवाद! – TalkLittle

+0

धन्यवाद TalkLittle! – SarjanWebDev

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