OAuth 2.1
दूसरे ऐप को अपने यूज़र Bot-Hosting अकाउंट से साइन इन कराने दें, जैसे Sign in with Discord। OAuth 2.1 और PKCE पर बना है, इसलिए कोई भी स्टैंडर्ड OAuth क्लाइंट चलता है।
अपना खुद का अकाउंट चलाने के लिए API key इस्तेमाल करें। OAuth तब इस्तेमाल करें जब आप ऐसा ऐप बना रहे हों जो दूसरों के अकाउंट पर काम करता है, ताकि वे key पेस्ट करने की जगह लॉग इन करें और सहमति दें। ChatGPT जैसे AI असिस्टेंट इसी फ़्लो से कनेक्ट होते हैं।
फ़्लो
- 01 ऐप बनाएँ डेवलपर सेटिंग्स में नाम और रीडायरेक्ट URI रजिस्टर करें। आपको पब्लिक client_id मिलता है, बिना सीक्रेट के।
- 02 यूज़र को ऑथराइज़ करने भेजें PKCE के साथ /oauth/authorize पर रीडायरेक्ट करें। यूज़र लॉग इन करके स्कोप मंज़ूर करता है।
- 03 कोड एक्सचेंज करें वे एक कोड के साथ लौटते हैं। एक्सेस टोकन के लिए उसे टोकन एंडपॉइंट पर POST करें।
- 04 उनकी ओर से API कॉल करें टोकन को Bearer के रूप में /api/v1 पर भेजें, और बैकग्राउंड में रिफ़्रेश करें।
एंडपॉइंट
| एंडपॉइंट | काम |
|---|---|
| GET /oauth/authorize | यूज़र सहमति स्क्रीन, ब्राउज़र में खुलती है। |
| POST /api/oauth/token | कोड के बदले टोकन लें, या टोकन रिफ़्रेश करें। |
| POST /api/oauth/register | Dynamic Client Registration (RFC 7591), वैकल्पिक। |
| GET /.well-known/oauth-authorization-server | डिस्कवरी मेटाडेटा। |
| GET /.well-known/oauth-protected-resource | रिसोर्स मेटाडेटा, MCP क्लाइंट इस्तेमाल करते हैं। |
टोकन की अवधि
ऑथराइज़ेशन कोड 10 मि॰ एक बार इस्तेमाल, PKCE से बँधा।
एक्सेस टोकन 7 दिन /api/v1 कॉल के लिए Bearer।
रिफ़्रेश टोकन 30 दिन हर इस्तेमाल पर बदला जाता है।
रिफ़्रेश
हर रिफ़्रेश नया रिफ़्रेश टोकन लौटाता है और पुराना रद्द कर देता है: सहेजा हुआ टोकन हमेशा ओवरराइट करें। अगर रिफ़्रेश invalid_grant लौटाए, तो यूज़र को वापस स्टेप 1 पर भेजें।
सिक्योरिटी
- टोकन सर्वर-साइड रखें, अपने यूज़र से जुड़े हुए। उन्हें कभी ब्राउज़र या पब्लिक रिपॉज़िटरी में न भेजें।
- यूज़र के आपका ऐप डिसकनेक्ट करते ही टोकन रद्द हो जाते हैं।
- प्रोडक्शन में https रीडायरेक्ट URI इस्तेमाल करें। लोकल टेस्टिंग के लिए http मान्य है।
- OAuth टोकन से एडमिन एक्सेस कभी नहीं मिलता, चाहे कोई भी स्कोप मंज़ूर हों।