बाहरी 'निर्देशिका सेवा' के साथ SSO / प्रमाणीकरण एकीकरण


15

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

यह प्रणाली आधिकारिक उपयोगकर्ता डेटाबेस के रूप में कार्य करेगी, और नए उपयोगकर्ताओं को बनाने और मान्य उपयोगकर्ताओं को प्रमाणित करने के लिए एक RESTful इंटरफ़ेस प्रदान करती है।

  1. मुझे WP में नए उपयोगकर्ता बनाने में सक्षम होने की आवश्यकता है और उस प्रक्रिया के हिस्से के रूप में उस उपयोगकर्ता को बनाने / मान्य करने के लिए बाहरी प्रमाणीकरण एपीआई पर कॉल करें।

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

  3. समग्र वेबसाइट में लॉग इन किया हुआ व्यक्ति भी स्वतः वर्डप्रेस में लॉग इन होना चाहिए।

मैं सोच रहा हूँ कि जाने का रास्ता निम्नलिखित है।

  • (1) के लिए - क्या कोई पंजीकरण हुक है जिसका मैं उपयोग कर सकता हूं?

  • 2 (के लिए) - मैं मान रहा हूं कि मैं प्रमाणित फिल्टर को हुक कर दूंगा - यानी जब कोई लॉगिन करने की कोशिश करता है, तो मैं उसे फंसाता हूं, बाहरी सिस्टम पर कॉल करता हूं, और फिर WP लॉगिन की प्रक्रिया करता हूं या उन्हें पंजीकरण प्रक्रिया में रीडायरेक्ट करता हूं जहां ( 1) oer लेता है।

  • के लिए (3) - मुख्य साइट द्वारा निर्धारित लॉगिन कुकी पढ़ें और (2) के साथ आगे बढ़ें?

मुझे लगता है कि मुझे उपयोगकर्ताओं और usermeta तालिका में एक रिकॉर्ड सम्मिलित करने की आवश्यकता होगी।

तो, क्या उपरोक्त समझ में आता है - क्या मैंने कुछ के बारे में नहीं सोचा है। किसी को भी इसके साथ मदद करने के लिए कोई अच्छा संसाधन मिला (@hakre - मैंने देखा कि आपने इस पर कुछ काम किया है !!)।

अपडेट करें

इसलिए मैं अभी भी इस के खिलाफ अपने सिर को कोस रहा हूं, अनिवार्य रूप से मैं प्रामाणिक फिल्टर में हुक करने की कोशिश कर रहा हूं, और इसका उपयोग कर रहा हूं:

  1. जांचें कि क्या 'मास्टर' साइट के लिए एक लॉगिन कुकी सेट है, और यदि यह है, तो उनके प्रमाणीकरण एपीआई के खिलाफ अमान्य है, और यदि वैध है, तो wp_signon()मास्टर साइट कुकी (ईमेल और हैशेड पासवर्ड) में निहित जानकारी का उपयोग करके, एक WP लॉगिन के साथ मजबूर करें। WP के लिए साख के रूप में
  2. अगर कुकी सेट नहीं है, तो मास्टर साइट लॉगिन पेज पर रीडायरेक्ट करें और फिर लॉगिन / साइनअप करें और फिर चरण 1 पर वापस जाएं
  3. यदि कोई प्रमाणित उपयोगकर्ता साइट मौजूद होने पर WP उपयोगकर्ता नहीं है, तो इसे बनाएं और फिर एक 'पारदर्शी' साइनॉन (यानी इसलिए उपयोगकर्ता WP लॉगिन फ़ॉर्म नहीं देखता है)

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

यह काफी धीरे-धीरे चल रहा है, यहां मैं कुछ मदद का उपयोग कर सकता हूं:

  • क्या प्रमाणिक फ़िल्टर सही उपयोग के लिए है? ऐसा लगता नहीं है कि मुझे उन सभी स्थितियों में बुलाया जाएगा जो मैं उम्मीद कर रहा हूँ - जैसे कि मेटा विजेट प्रदर्शित करता है लॉग इन / लिंक आउट बिना प्रमाणित हुक फायरिंग के

  • मैं wp_signon()एक WP_Userवस्तु (सफलता का संकेत) वापस करने के लिए मिल सकता है , लेकिन यह लॉग इन स्थिति को प्रभावित नहीं करता है - यानी मेटा विजेट अभी भी ताज़ा होने के बाद भी "लॉगिन" दिखाएगा।

कोई मदद कृतज्ञता से प्राप्त :)


शायद यह एक अलग सवाल होना चाहिए?
अनु

ओह, और मुझे नहीं पता कि क्या यह भी उल्लेख करने की अनुमति है, लेकिन मैं खुशी से आधे दिन या इसके लिए मदद का भुगतान करूंगा - मेरे प्रोफ़ाइल पर संपर्क विवरण।
अनु

जवाबों:


12

ठीक है, मेरे लिए काम कर रहा दृष्टिकोण इस प्रकार है:

  1. मान लें कि मुख्य साइट उपयोगकर्ता डेटाबेस आधिकारिक है। मुख्य साइट लॉगिन कुकी में एक आईडी और साइट पासवर्ड का एक हैश होता है।

  2. कुकी को मुख्य साइट से प्राप्त करें और इसे मुख्य साइट के प्रमाणीकरण API के विरुद्ध अमान्य करें

  3. यदि मान्य है, तो 'user_login'WP मान के लिए वापसी मान और ईमेल पासवर्ड के रूप में हैशेड साइट पासवर्ड से ईमेल पते का उपयोग करें ।

  4. परीक्षण करें कि क्या यह उपयोगकर्ता WP में मौजूद है wp_authenticate('user_login', 'user_pass')। यह WP_Userसफलता पर एक वस्तु, या WP_Errorविफलता पर एक वस्तु देता है।

  5. यदि WP_Error/is_wp_error(), तब wp_update_user()उपयोगकर्ता बनाने के लिए उपयोग करें (या परिवर्तित पासवर्ड वाले उपयोगकर्ता को अपडेट करें)।

  6. के माध्यम से लॉगिन wp_set_current_user(), wp_set_auth_cookie()औरdo_action('wp_login, id)

(यह सब एक फ़ंक्शन में निहित है जो 'init'कार्रवाई से जुड़ा हुआ है )

ऐसा लगता है कि काम कर रहा है - WP के लिए अज्ञात वैध साइट उपयोगकर्ता स्वचालित रूप से बनाए जाते हैं। पासवर्ड में बदलाव किए जाते हैं, और यदि साइट कुकी सेट की जाती है, और WP उपयोगकर्ता मौजूद है, तो SSO स्वचालित और बहुत ही सहज है।


1
+1 बहुत बढ़िया विवरण / उत्तर। आशा है कि आपको एक दिन थोड़ा और विवरण दिखाने के लिए एक दिन का समय मिलेगा। ट्रायल / एरो के सबसे से बचने के लिए दूसरों की मदद करेंगे;)
kaiser

1
यह वही है जो आप देख रहे हैं, क्या आप थोड़ा और अधिक सफल समझा सकते हैं? विशेष रूप से कदम 1,2,3 मेरे लिए बहुत स्पष्ट नहीं हैं। धन्यवाद!!
चिफ्लिइआई

3

संपूर्ण प्रमाणीकरण प्रणाली प्लग करने योग्य है। मेरा सुझाव है कि मौजूदा प्लगइन्स को देखने के लिए एक विचार प्राप्त करें कि सिस्टम को कैसे ओवरराइड किया जाए। शायद कुछ LDAP प्लगइन्स को देखकर ?


हाँ और बिना मतलब के झपकी लेना, यह स्पष्ट है !!
अनु

कुछ जानकारी के लिए जो उपयोगकर्ता के हस्ताक्षरित स्थिति को दर्शाने में मदद कर सकती है, मेरे इस अन्य प्रश्न का उत्तर देखें: wordpress.stackexchange.com/questions/8998/…
डगल कैम्पबेल

1

कई उपयोगकर्ता-संबंधित फ़ंक्शन को सशर्त रूप से परिभाषित किया गया !function_exists()है wp-includes/pluggable.phpऔर अपने स्वयं के संस्करणों के साथ ओवरराइड करना आसान है।


1

वर्डप्रेस पर सिंगल-साइन-ऑन को सक्षम करने में मुझे 18+ घंटे का संघर्ष करना पड़ा लेकिन आपको केवल कुछ मिनट लग सकते हैं:

मूल रूप से, आप का उपयोग करना चाहेंगे https://wordpress.org/plugins/wp-force-login/ और का एक संशोधित संस्करण https://as.wordpress.org/plugins/jwt-authenticator/ और फिर एक प्रमाणन बनाने अपने मुख्य साइट पर असुरक्षित एंडपॉइंट जो एक JWT (JSON वेब टोकन) उत्पन्न करता है और आपके वर्डप्रेस साइट के विशेष URL पर वापस रीडायरेक्ट करता है।

देखें पूर्ण कोड यहाँ


आपके उत्तर के लिए धन्यवाद। लिंक केवल उत्तर हतोत्साहित होते हैं क्योंकि लिंक गायब हो सकते हैं और आपको बेकार जवाब देंगे। प्रासंगिक बिट्स को यहां शामिल करना बेहतर है।
कैसर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.