ऐसे लॉगिन/पंजीकरण तर्क को लागू करने की मेरी योजना (प्रमाणीकरण कोड प्रवाह) यहां दी गई है।किसी तृतीय-पक्ष लॉगिन/रजिस्टर को लागू करने के लिए OAuth2 का उपयोग कैसे करें?
पहले एसपीए दृश्यपटल
GET https://www.example.com/oauth2
client_id=dummyclient
redirect_uri=https://mysite/callback
response_type=code
scope=openid
तो तीसरे पक्ष के लिए एक GET अनुरोध भेजेगा कि उपयोगकर्ता के लिए उसकी/उसके openid देने के लिए सहमत (तीसरे पक्ष के केवल OAuth2 एपीआई प्रदान की गई) mysite तो fronend एक 301 HTTP प्रतिक्रिया मिलेगा।
---> 301 https://mysite/callback?code=dummycode
बाद ब्राउज़र को mysite/callback
करने के लिए पृष्ठ पर रीडायरेक्ट करेगा और यह एसपीए को फिर से लोड और यूआरएल जो एसपीए द्वारा कब्जा किया जा सकता है तो यह असली बैकएंड कॉलबैक करने के लिए कोड भेज देंगे में कोड सामने आ जाएगी।
GET https://mysite/api/real-callback?code=dummycode
जब बैकएंड कोड प्राप्त है, यह कोड तीसरे पक्ष के लिए एक access_token
विनिमय करने के लिए भेज देंगे। जब बैकएंड access_token
प्राप्त करता है, तो यह उपयोगकर्ता के ओपनिड को प्राप्त करने के लिए एक एपीआई अनुरोध को फायर करेगा, फिर यह तय करेगा कि उपयोगकर्ता को लॉगिन करने या नए उपयोगकर्ता के रूप में पंजीकरण करने देना है या नहीं। अंत में यह हमारे एसपीए फ्रंटएंड पर एक HTTP प्रतिक्रिया वापस देगा जिसमें में ओएथ 2 सिस्टम या 401 अनधिकृत प्रतिक्रिया शामिल है।
तो मेरे सवाल का साबित करने के लिए कैसे है कि वास्तविक कॉलबैक मेरी खुद ग्राहकों द्वारा उत्पन्न होता है (यदि कुछ हमलावर मिल मेरी दृश्यपटल एम्बेडेड क्योंकि client_id
तो वह नकली OAuth2 अनुरोध और उपयोगकर्ता फ़िशिंग सहमत होने के लिए कर सकते हैं। उसके बाद हमलावर को एक वैध कोड मिलेगा, फिर वह मेरे असली कॉलबैक पर कोड वापस भेज देगा। आखिरकार, वह मेरे सिस्टम में उपयोगकर्ता का access_token
प्राप्त करेगा।) मैं अंतिम उपयोगकर्ता के पासवर्ड जैसे अतिरिक्त जानकारी प्रदान किए बिना प्रमाणीकरण करने के लिए OAuth2 का उपयोग कैसे कर सकता हूं।
OAuth2 सर्वर से रीडायरेक्ट URL के रूप में 'वास्तविक-कॉलबैक' URL नहीं होने का आपका कारण क्या है? मुझे एसपीए फ्रंटएंड में ऑथ कोड प्राप्त करने का कोई कारण नहीं दिख रहा है। –
@ जनहाला इस चरण के बावजूद सुरक्षा समस्या अभी भी तब तक मौजूद है जब तक कि मैं तीसरे पक्ष के ओएथ 2 कॉलबैक अनुरोध के बाद मेरे सिस्टम की 'access_token' को फ्रंटेंड पर वापस भेजूं। वास्तविक-कॉलबैक को डिज़ाइन करने का कारण यह है कि मैं फ्रंटेंड और बैकएंड के बीच असली अलगाव प्राप्त करना चाहता हूं। – bitweaver
और एसपीए में आपको 'access_token' की क्या आवश्यकता है? –