2017-02-14 16 views
6

मैं दो डोमेन के लिए PHP में एक साधारण एसएसओ सिस्टम बनाने की कोशिश कर रहा हूं जो विषयगत रूप से जुड़े हुए हैं।क्रॉस डोमेन प्रमाणीकरण के लिए जेडब्ल्यूटी टोकन

तो मैं सोच रहा था कि एक हस्ताक्षरित जेडब्ल्यूटी टोकन को डोमेन ए से स्थानीय उपयोगकर्ता में उपयोगकर्ता नाम से युक्त करना संभव है या नहीं। और फिर एक डोमेन बी से एक ही गुप्त कुंजी का उपयोग कर जेडब्ल्यूटी को सत्यापित करने के लिए जो एक सफल प्रमाणीकरण का कारण बन जाएगा।

मैंने कुछ उत्तरों के लिए Google खोजा है और मैंने उनमें से कुछ को मध्य प्रमाणीकरण डोमेन वाला पाया है, जो प्रमाणीकरण का ख्याल रखेगा। लेकिन मैं सिर्फ दो डोमेन को लिंक करना चाहता हूं।

धन्यवाद।

उत्तर

2

क्रॉस-ओरिजिन डोमेन एक करने के लिए डोमेन बी से डेटा भंडारण पहुँच द्वारा same-origin policy

ऐसे localStorage और IndexedDB के रूप में ब्राउज़र में संग्रहीत डेटा तक पहुंच की अनुमति नहीं है मूल से अलग होती है। प्रत्येक उत्पत्ति का अपना अलग भंडारण मिलता है, और एक मूल में जावास्क्रिप्ट किसी अन्य मूल से संबंधित भंडारण को पढ़ या लिख ​​नहीं सकता है।

सामान्य समाधान (ए या बी हो सकता है) प्रमाणीकरण के लिए एक केंद्रीय डोमेन है और जेडब्ल्यूटी या रों भेजने डोमेन के बीच पुनर्निर्देशन के साथ काम करने के लिए डोमेन Iframe का उपयोग करके भर में प्रमाणीकरण टोकन खरगोश है। विवरण here देखें

OpenId, OAuth और SAML प्रोटोकॉल पुनर्निर्देशन के साथ काम करता है, और उदाहरण के लिए गूगल वेब सूट उनके एप्लिकेशन गर्त iframes जुड़ा है

+0

Iframe अच्छा काम करता है (इसके अतिरिक्त गूगल एक openid-कनेक्ट प्रदाता है)! धन्यवाद! – Ales

0

कोई कारण नहीं है कि आप ऐसा क्यों नहीं कर सकते हैं। एक जेडब्ल्यूटी वास्तव में कुछ विशेष नहीं है, यह बस एक सत्र आईडी टोकन की तरह एक टोकन है। जेडब्ल्यूटी और किसी अन्य टोकन के बीच का अंतर यह है कि इसमें डेटा का पेलोड हो सकता है।

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

PHP में OAuth 2.0 को लागू करते समय मैं निम्नलिखित लाइब्रेरी का उपयोग करता हूं: https://oauth2.thephpleague.com/ - दस्तावेज़ों में भी कुछ अच्छी जानकारी है।

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