मैं अपनी साइट के लिए ओपनआईडी प्रमाणीकरण को लागू करने की कोशिश कर रहा हूं। यहाँ परिदृश्य है:
मैं उपयोगकर्ता, (। सिर्फ OpenID प्रदाता पर जाकर सत्यापित करवा सकते हैं ईमेल-पासवर्ड के साथ एक कस्टम खाता बनाने के लिए कोई जरूरत नहीं उपयोगकर्ता) बस OpenID का उपयोग करतेआवश्यक ओपनआईडी जानकारी संग्रहीत
- लॉगिन करने के लिए सक्षम होना चाहते हैं
- ईमेल/पासवर्ड के माध्यम से (उपयोगकर्ता ने फॉर्म भरकर साइट पर पंजीकरण किया है)
- अपने खाते में खुले आईडी (ओपनिड्स + एक खाते के लिए ईमेल) संलग्न करें।
अब मुझे नहीं पता कि मुझे खुले आईडी के लिए कौन से प्रमाण-पत्र स्टोर करना चाहिए। और डीबी स्कीमा के बारे में निश्चित नहीं है। यहाँ डेटाबेस स्कीमा है: जब कोई उपयोगकर्ता में लॉग करता है, कि क्या openid/कस्टम सदस्यता का उपयोग करके
Table: Users
UserId => PK
... => Custom info. Not related to authentication.
Table: Authentication
AuthenticationId => PK
LoginId => (when custom site membership => email address) (when openId => openid unique address)
UserId => FK to Users.
Provider =>(when custom site membership => "CUSTOM") (when openId => openid provider address)
Password => filled when using custom membership. empty when using open id.
अब, मैं सिर्फ प्रमाणीकरण तालिका को देखो और क्रेडेंशियल के लिए देखने के लिए और उपयुक्त उपयोगकर्ता मिलता है। यदि कोई उपयोगकर्ता मौजूद नहीं है, तो मैं एक नया उपयोगकर्ता बनाता हूं और प्रमाणीकरण तालिका में एक प्रविष्टि जोड़ता हूं।
मुख्य प्रश्न:
Provider
औरLoginId
OpenID प्रमाणीकरण के भंडारण के लिए पर्याप्त (देखने के लिए इन क्षेत्रों में संग्रहीत किया जा रहा है इसके बाद के संस्करण की टिप्पणियां देखें) भंडारण है? क्या मुझे कोई अतिरिक्त डेटा स्टोर करना चाहिए ताकि जब उपयोगकर्ता लौटाता है तो मैं उसे अपने सहेजे गए डेटा के आधार पर प्रमाणित कर सकता हूं?क्या आप इसे लागू करने के लिए कोई अन्य (अधिक कुशल) दृष्टिकोण सुझाते हैं?
धन्यवाद।
मैंने 'प्रदाता 'कॉलम हटा दिया और' बिट 'प्रकार के' IsOpenId' को जोड़ा। प्रमाणीकरण तालिकाओं को अलग करने के पेशेवर क्या हैं (ओपनिड और कस्टम के लिए) [ओपनिड प्रमाणीकरण के लिए अनावश्यक 'पासवर्ड' कॉलम को हटाने के बजाय]? – Kamyar
मैंने आपके लिए अपना जवाब बढ़ाया। –
बिल्कुल सही! धन्यवाद। – Kamyar