अनुसंधान के बहुत सारे के बाद, मुझे पता चला कि client_credentials
अनुदान प्रकार इस परिदृश्य के लिए है। एक बार जब आप Google को इस शब्द को पंच करते हैं, तो आप बहुत उपयोगी संसाधनों का भार पा सकते हैं।
इस 3-लेग्ड OAuth 2.0 के लिए सामान्य प्रवाह है (हम प्रवेश करने के लिए उपयोगकर्ता चाहते हैं):
मान लें हम प्रमाणीकरण के लिए हमारे एप्लिकेशन में निम्न अंतिमबिंदुओं है:
/oauth/auth
/oauth/token
आम तौर पर (प्राधिकरण कोड अनुदान) के लिए, हम /oauth/auth?state=blah&client_id=myid&redirecturl=mysite.com/blah
प्रमाणीकरण पर
तब करने के लिए उपयोगकर्ता प्रत्यक्ष, उपयोगकर्ता mysite.com/blah?code=somecode
पर भेज दिया जाएगा 10
हम somecode
प्राप्त करते हैं और /oauth/token?code=somecode&client_id=myid&client_secret=mysecret
का उपयोग करके टोकन के लिए इसका आदान-प्रदान करते हैं, फिर हम कॉल करने के लिए टोकन का उपयोग कर सकते हैं।
यह client_credentials
के लिए आवेदन प्रवाह 2-चरणीय OAuth 2.0 है, जो स्पष्ट रूप से सरल है लागू करने के लिए है:
ध्यान दें कि गुंजाइश वैकल्पिक है। एंडपॉइंट तब हमारे लिए उपयोग करने के लिए सीधे पहुंच टोकन देता है (कोई रीफ्रेश टोकन प्रदान नहीं किया जाता है)। चूंकि टोकन की समयसीमा समाप्त होने पर कोई ताज़ा टोकन प्रदान नहीं किया जाता है, इसलिए आपको पुनः प्रमाणित करने और एक नया पूछने की आवश्यकता होगी।
यह निम्न चेतावनियां की ओर जाता है:
- उपयोग इस तरह के आंतरिक उपयोग के रूप में इस के लिए ही (बहुत बहुत) पर भरोसा किया अनुप्रयोगों।
- आपको प्रमाणित करने के लिए अपने तरीके से डिवाइस की आवश्यकता है। उदाहरण के लिए, RFC's example मूल लेख का उपयोग करता है।
एक अन्य समाधान जेडब्ल्यूटी (जेएसओएन वेब टोकन) का उपयोग करना है जैसे google OAuth API। यह एक बहुत ही जटिल प्रक्रिया है, लेकिन आपके जेडब्ल्यूटी को उत्पन्न करने के लिए कई पुस्तकालय मौजूद हैं।
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=generated_jwt
यह /oauth/token
को पोस्ट किया जाता है अपने टोकन प्राप्त करने: फिर आप निम्न प्रपत्र डेटा (यूआरएल निश्चित रूप से इनकोडिंग) पोस्ट करते हैं।
का सवाल आप एक API कि 2-पैर और 3-लेग्ड OAuth 2.0, हाँ, यह संभव है का समर्थन करता है बना सकते हैं कि क्या का सवाल है।
फिर /auth
एंडपॉइंट केवल तभी उपयोग किया जाता है जब उपयोगकर्ताओं को सेवा के विरुद्ध प्रमाणित करने की आवश्यकता होती है।
/token
endpoint में, बस urn:ietf:params:oauth:grant-type:jwt-bearer
के लिए GET पैरामीटर में grant_type
के मान की जाँच करता है, तो client_credentials के लिए जेडब्ल्यूटी या client_credentials
का उपयोग कर।
ध्यान दें कि उपयोगकर्ता को देने के लिए क्लाइंट_आईडी और क्लाइंट_सेक्रेट उत्पन्न करते समय, यदि आप एकाधिक grant_types
का समर्थन कर रहे हैं, तो सुनिश्चित करें कि आपके पास डेटाबेस कॉलम है कि किस प्रकार का अनुदान आईडी और गुप्त उत्पन्न हुआ था। यदि प्रति उपयोगकर्ता एकाधिक अनुदान प्रकारों की आवश्यकता होती है, तो प्रत्येक अनुदान प्रकार के लिए प्रमाण-पत्रों का एक अलग सेट उत्पन्न करें।
आपके साथ सहमत हैं, 3-पैर वाले ओथ 2.0, या 2-पैर वाले ओथ 1.0 के लिए पर्याप्त जानकारी है, लेकिन 2-पैर वाले ओथ 2.0 के लिए शायद ही कुछ भी है। – skyfree