2016-01-04 6 views
6

ओयूथ के लिए शुरुआत करने वाला थोड़ा सा और पूछना चाहता था कि क्या मैं कुछ सही तरीके से समझ गया हूं। मैं उपयोग कर रहा हूँ Owin और सी # और मैं सेटअप इस परिदृश्य:क्लाइंट_आईडी और क्लाइंट_सेक्रेट को समझना

  1. एक उपयोगकर्ता पासवर्ड के grant_type के साथ एक उपयोगकर्ता नाम/पासवर्ड में गुजर, मेरे टोकन समाप्ति बिंदु को एक अनुरोध करता है। यदि प्रमाण-पत्र मान्य हैं, तो मैं एक जेडब्ल्यूटी बना देता हूं।

  2. उपयोगकर्ता वापस हो जाता है एक जेडब्ल्यूटी, और उसके बाद ग्राहक उस टोकन सभी अनुरोधों

  3. जिन्हें प्राधिकरण की आवश्यकता मैं टोकन के दावों का उपयोग उपयोगकर्ता सुनिश्चित करने के लिए इस अनुरोध करने की अनुमति है किसी भी अनुरोध के लिए आगे बढ़ने के लिए उपयोग करता है।

तो क्लाइंट_आईडी और क्लाइंट_सेक्रेट कहां आते हैं? क्या यह कहने के लिए सुरक्षा की एक अतिरिक्त परत है "इससे पहले कि आप टोकन भी प्राप्त कर सकें, आपको मुझे अन्य प्रमाण-पत्र (आईडी/गुप्त) सेट करना होगा और केवल मान्य हैं, आपके उपयोगकर्ता नाम/पासवर्ड प्रदान की है, यदि आप एक जेडब्ल्यूटी वापस प्राप्त कर सकते

को समझने के लिए जो दो से संबंधित चाहेंगे - धन्यवाद इतना

+0

उन दोनों सुनिश्चित करने के लिए टोकन के सत्यापन पर उपयोग किया जाता है पक्ष मैच। जब आप Google मानचित्र एपीआई कुंजी का उपयोग करते हैं तो जैसे। जब आप पंजीकरण करते हैं तो आपके लिए एक तरफ आपके लिए बनाया जाता है और आपको वही कुंजी मिलती है जिसे आप प्रत्येक अनुरोध पर पारित करेंगे। –

उत्तर

3

दोनों ग्राहक_आईडी और क्लाइंट_सेक्रेट पासवर्ड प्रवाह में उपयोग नहीं किए जाते हैं। हालांकि, जैसा कि आप शायद जानते हैं, OAuth2 में अन्य प्रवाह हैं, जो अन्य परिदृश्यों के लिए उपयुक्त हैं।

अर्थात्

:

  • प्राधिकरण कोड प्रवाह कि प्रमाणित उपयोगकर्ताओं सर्वर साइड वेब एप्लिकेशन में इस्तेमाल किया। क्लाइंट_आईडी प्रारंभिक रीडायरेक्ट में उपयोग किया जाता है, क्लाइंट_सेक्रेट का उपयोग अंतिम चरण में किया जाता है जहां ऐप टोकन के लिए एक बार कोड का आदान-प्रदान करता है।

  • ग्राहक साख प्रवाह व्यक्तिगत उपयोगकर्ताओं

सभी विभिन्न प्रवाह का एक संक्षिप्त संदर्भ के बजाय अनुप्रयोगों को प्रमाणित करने के लिए प्रयोग किया जाता: https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

+0

तो जब मैं सिर्फ उपयोगकर्ता को सिस्टम में लॉग इन करने का लक्ष्य रखता हूं, तो ऐसा लगता है कि मुझे क्लाइंट_आईडी या क्लाइंट_सेक्रेट की आवश्यकता नहीं होगी? या यदि हां, तो मैं टोकन वापस पाने के लिए उपयोगकर्ता को लॉगिन/उपयोगकर्ता नाम/पासवर्ड क्यों नहीं दे सकता, और मैं कर रहा हूं? – NullHypothesis

+0

@ user3379785: क्यों? उपयोगकर्ता नाम/पासवर्ड सीखने के लिए, आपके ऐप को दोनों के लिए पूछना है। और कोई भी अज्ञात पृष्ठ में प्रदान करके अपने Google/फेसबुक प्रमाण-पत्र प्रदान करने का जोखिम उठाने वाला नहीं है। प्रमाणीकरण कोड प्रवाह ** ब्राउज़र को प्रदाता पृष्ठ पर रीडायरेक्ट करता है ताकि प्रमाण पत्र उनके पृष्ठ पर उपलब्ध कराए जा सकें, अवांछित रिसाव के लिए कोई जगह न छोड़े। –

+0

मेरा फ्रंट एंड मेरे बैकएंड एपीआई के समान डोमेन पर है। और केवल मेरा ऐप उपयोगकर्ता के उपयोगकर्ता नाम/पासवर्ड के साथ जेडब्ल्यूटी प्राप्त करने के लिए कॉल कर रहा है। तो मेरे मामले में, क्लाइंट_आईडी या गुप्त की आवश्यकता नहीं है? मैं वास्तव में यह नहीं देखूंगा कि एक सीक्रेट का उपयोग कैसे किया जाता है क्योंकि यह मेरे जेपी को सीधे जेएस कॉल करता है, और मेरा बैकएंड एपीआई क्रेडेंशियल की जांच कर रहा है और जेडब्ल्यूटी – NullHypothesis

0

दो पक्षों के प्रमाणीकृत करने की आवश्यकता है के होते हैं:?! आवेदन और उपयोगकर्ता

एप्लिकेशन आईडी और गुप्त के साथ प्रमाणीकृत है, संभवतः कॉलबैक यूआरएल द्वारा समर्थित, जो सुनिश्चित करना चाहिए कि आरईसी टोकन का क्षणिक सही है।

उपयोगकर्ता OAuth प्रदाता के माध्यम से प्रमाणित है। यह इसके लिए उपयोगकर्ता नाम/पासवर्ड का उपयोग कर सकता है, या जो भी OAuth प्रदाता आवश्यक समझा जाता है। उस टोकन का उपयोग उपयोगकर्ता नाम और पासवर्ड जानने के बिना उपयोगकर्ता डेटा प्राप्त करने की अनुमति देने के लिए किया जाता है।

+0

तो यह अनधिकृत अनुप्रयोगों को मेरे एपीआई में कॉल करने से रोकने के लिए है? भले ही कॉल मेरे एपीआई में एक अज्ञात कार्रवाई के लिए है, मैं उपयोग को प्रतिबंधित कर सकता हूं ताकि ग्राहक इसे एक्सेस कर सके? ठीक है धन्यवाद। तो आम तौर पर आप हमेशा प्रत्येक अनुरोध में एपीआई कुंजी/गुप्त, साथ ही टोकन को पास करना चाहते हैं? – NullHypothesis

+0

हां, यह एक बुनियादी प्रमाणीकरण तंत्र है। –

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