मैं इस समय एक बहु-प्लेटफ़ॉर्म एप्लिकेशन डिज़ाइन कर रहा हूं (क्लाइंट आंतरिक रूप से विकसित मोबाइल ऐप्स और प्रारंभ में एक AJAX भारी जावास्क्रिप्ट क्लाइंट शामिल करेगा) एक आरईएसटी एपीआई के आसपास केंद्रित है। चूंकि भविष्य में एपीआई तीसरे पक्ष के लिए खुला हो सकता है, मैं एपीआई के साथ प्रमाणीकरण और प्रमाणीकरण के लिए ओएथ 2.0 का उपयोग कर रहा हूं।जावास्क्रिप्ट क्लाइंट को OAuth टोकन को संवाद करने का सुरक्षित तरीका
मैं इस व्यवस्था के साथ विशेष रूप से जावास्क्रिप्ट क्लाइंट के संबंध में कुछ सुरक्षा मुद्दों के आसपास अपना सिर प्राप्त करने की कोशिश कर रहा हूं। मैं नहीं चाहता कि यह क्लाइंट रीडायरेक्ट्स और पॉपअप और सामानों के पूरे समूह के साथ तीसरे पक्ष के क्लाइंट की तरह व्यवहार करे, जो कि अधिकांश ओएथ दस्तावेज पर ध्यान केंद्रित करता है। चूंकि यह मेरे अपने डोमेन से वितरित किया जाएगा, इसलिए मैं सोच रहा हूं कि वेबपैप का सर्वर पक्ष वास्तविक क्लाइंट हो सकता है, और क्लाइंट रहस्यों को स्टोर कर सकता है और टोकन रीफ्रेश कर सकता है, जबकि जावास्क्रिप्ट सर्वर से नए ऑथ टोकन पुनर्प्राप्त करता है क्योंकि इसकी आवश्यकता होती है। , गैर ajax एचटीएमएल प्रपत्र का उपयोग कर प्रमाणन पैदा करने में
- उपयोगकर्ता के लॉग और जो सर्वर साइड जमा हो जाती है टोकन ताज़ा:
कदम रूप से कदम में कहें। यह एक HTTP-केवल लॉगिन सत्र कुकी सेट करता है।
- लॉगिन के बाद जावास्क्रिप्ट क्लाइंट कोड उपयोगकर्ता के ब्राउज़र पर भेजा जाता है।
- जावास्क्रिप्ट क्लाइंट एक संसाधन के लिए अनुरोध करता है जो टोकन को पुनर्प्राप्त करने के लिए अपने स्वयं के एप्लिकेशन (आरईएसटी एपीआई का हिस्सा नहीं) का हिस्सा है। सत्र कुकी सुनिश्चित करता है कि ग्राहक वास्तविक है, और रेफरर भी चेक किया जाएगा। ऑथ टोकन वापस कर दिया गया है।
- जावास्क्रिप्ट क्लाइंट आरईएसटी एपीआई के साथ टोकन को मान्य करता है।
- क्लाइंट अब आरईएसटी एपीआई के खिलाफ अनुरोध समाप्त होने तक अनुरोध करने के लिए टोकन का उपयोग कर सकता है।
- यदि ऑथ टोकन समाप्त हो जाता है या पृष्ठ बंद हो जाता है और फिर से खोला जाता है, तो जावास्क्रिप्ट क्लाइंट एक नए टोकन का अनुरोध कर सकता है। वेबपैप का सर्वर पक्ष टोकन को रीफ्रेश करने का ख्याल रखता है और जब तक कि लॉगिन सत्र कुकी अभी भी वैध है, तब तक नया टोकन भेजता है।
क्या यह समझ में आता है, या यह सिस्टम में भारी छेद छोड़ देगा? विशेष रूप से, क्या यह वेब पर संसाधन रखने के लिए पागल है जो एक कुकी सेट के आधार पर प्रमाणीकरण टोकन को सौंपता है?
मैं सबकुछ ठीक से एसएसएल का उपयोग करने की योजना बना रहा था, मुझे उल्लेख करना चाहिए था। – randomhuman
मैं इस उत्तर से सहमत हूं और इस दृष्टिकोण को लागू करने पर विचार कर रहा हूं, लेकिन उल्लेख करने के लिए एक और दृष्टिकोण है। आप जावास्क्रिप्ट से "निहित" अनुदान का उपयोग कर सकते हैं, फिर सत्र कुकी बनाने के लिए अपने वेब ऐप पर कॉल करने के लिए एक्सेस टोकन का उपयोग करें। उस बिंदु से, सत्र कुकी (जो सर्वर-साइड पर एक्सेस टोकन से जुड़ा हुआ है) का उपयोग वेब ऐप के खिलाफ करने के लिए किया जाएगा और एक्सेस टोकन का उपयोग आरईएसटी एपीआई के खिलाफ किया जाएगा। हालांकि, आप यहां रीफ्रेश टोकन को कैसे प्रबंधित करते हैं (इसे स्थानीय स्टोरेज में स्टोर करें जहां उपलब्ध हो, शायद?)। –