OAuth क्या है? डेलीगेटेड एक्सेस, टोकन, और PKCE फ्लो

OAuth क्या है? डेलीगेटेड एक्सेस, टोकन, और PKCE फ्लो

Scrapeless Agent Browser ब्राउज़र नेविगेशन और सेशन‑आधारित वर्कफ़्लो को सपोर्ट करता है, जबकि OAuth अनुमतियाँ अभी भी एप्लिकेशन और ऑथराइज़ेशन सर्वर की ज़िम्मेदारी रहती हैं।

संक्षेप में

  • OAuth संरक्षित संसाधनों तक पहुँच को डेलीगेट करता है। यह प्रत्येक एप्लिकेशन के लिए एक सार्वभौमिक यूज़र‑लॉगिन अर्सर्शन परिभाषित नहीं करता।
  • ऑथराइज़ेशन कोड और एक्सेस टोकन की भूमिकाएँ अलग‑अलग होती हैं। कोड को टोकन एंडपॉइंट पर एक्सचेंज किया जाता है; एक्सेस टोकन का उपयोग किसी रिसोर्स सर्विस के साथ किया जाता है।
  • PKCE कोड एक्सचेंज को उसके आरंभिक क्लाइंट ट्रांज़ैक्शन से बाँधता है। पब्लिक एप्लिकेशन किसी एम्बेडेड साझा सीक्रेट पर सुरक्षित रूप से निर्भर नहीं रह सकते।
  • ब्राउज़र ऑटोमेशन डेलीगेटेड परमिशन नहीं बनाता। केवल वही अकाउंट और एक्शन उपयोग करें जिन्हें रिसोर्स ओनर ने अधिकृत किया है।

OAuth डेलीगेटेड ऑथराइज़ेशन के लिए एक फ़्रेमवर्क है

OAuth एक ऑथराइज़ेशन फ़्रेमवर्क है जो किसी एप्लिकेशन को संरक्षित संसाधनों तक सीमित पहुँच प्राप्त करने देता है, बिना उन संसाधनों के लिए रिसोर्स ओनर का पासवर्ड इकट्ठा किए। उदाहरण के लिए, एक यूज़र किसी शेड्यूलिंग टूल को कैलेंडर पढ़ने की अनुमति दे सकता है, जबकि कैलेंडर सर्विस अनुमत ऑपरेशन पर नियंत्रण रखती है। शेड्यूलिंग टूल को उस एक्सेस के लिए एक क्रेडेंशियल मिलता है, न कि यूज़र का पुन: प्रयोज्य पासवर्ड।

The OAuth authorization framework रोल और मुख्य इंटरैक्शन को परिभाषित करता है। रिसोर्स ओनर सम्बंधित संसाधन पर नियंत्रण रखता है, क्लाइंट एप्लिकेशन एक्सेस का अनुरोध करता है, ऑथराइज़ेशन सर्वर अपनी पॉलिसी के तहत क्रेडेंशियल देता है, और रिसोर्स सर्वर संरक्षित API होस्ट करता है। एक ही संगठन दोनों सर्वर रोल चला सकता है, लेकिन रोल अलग‑अलग रखने से यह समझाने में मदद मिलती है कि प्रमाणीकरण, परमिशन संबंधी निर्णय, और टोकन वैलिडेशन कहाँ होते हैं।

टोकन ग्रांट किसी अकाउंट पर पूर्ण अधिकार देने से संकरा होता है। एक्सेस को स्कोप, लक्षित संसाधन, अवधि, और ऑथराइज़ेशन सर्वर की पॉलिसी के अनुसार सीमित किया जा सकता है। रिसोर्स सर्वर अभी भी जाँचता है कि ऑपरेशन अनुमत है या नहीं। कंसेंट स्क्रीन अनुरोधित एक्सेस का वर्णन करती है, जबकि वास्तव में दिया गया क्रेडेंशियल और सर्वर प्रवर्तन यह निर्धारित करते हैं कि सहमति के बाद एप्लिकेशन क्या कर सकता है।

ऑथराइज़ेशन और ऑथेंटिकेशन अलग‑अलग सवालों का जवाब देते हैं

ऑथराइज़ेशन निर्धारित करता है कि कोई एप्लिकेशन कौन‑सी पहुँच का उपयोग कर सकता है; ऑथेंटिकेशन किसी विशेष संदर्भ में एक पहचान स्थापित करता है। OAuth में यूज़र का ऑथराइज़ेशन सर्वर पर साइन‑इन शामिल हो सकता है, लेकिन वह इंटरैक्शन अपने आप क्लाइंट को उसके स्वयं के लॉगिन सिस्टम के लिए मानकीकृत पहचान अर्सर्शन नहीं देता। किसी मनमाने एक्सेस टोकन को लॉगिन के प्रमाण के रूप में मानना टोकन‑सब्स्टीट्यूशन और ऑडियंस संबंधी समस्याएँ पैदा कर सकता है।

The OpenID Connect identity layer OAuth के ऊपर ऑथेंटिकेशन जोड़ता है और क्लाइंट के लिए वैलिडेट करने हेतु एक ID टोकन परिभाषित करता है। एक्सेस टोकन किसी रिसोर्स सर्विस के लिए होता है, जबकि ID टोकन क्लाइंट के ऑथेंटिकेशन संदर्भ को संबोधित करता है। यह अंतर मानकों में दिखाई देता है और एप्लिकेशन डिज़ाइन में भी दिखाई देना चाहिए। किसी असंबंधित API को ID टोकन भेजना सही एक्सेस टोकन प्रस्तुत करने के बराबर नहीं है।

साइन‑इन प्रोडक्ट के लिए ऐसा प्रोवाइडर इंटीग्रेशन चुनें जो स्पष्ट रूप से आवश्यक identity प्रोटोकॉल को सपोर्ट करता हो और उसके टोकन को उसी प्रोटोकॉल से वैलिडेट करें। डेलीगेटेड API एक्सेस के लिए, न्यूनतम उपयुक्त परमिशन का अनुरोध करें और परिणामस्वरूप प्राप्त एक्सेस क्रेडेंशियल केवल उसके लक्षित सर्विस को भेजें। एक ही यूज़र‑फेसिंग बटन दोनों वर्कफ़्लो को छिपा सकता है, इसलिए हर सोशल साइन‑इन एक्शन को मात्र OAuth login कहने के बजाय वास्तविक कॉन्ट्रैक्ट की जाँच करें।

एक ऑथराइज़ेशन कोड ब्राउज़र कंसेंट को टोकन उपयोग से अलग करता है

ऑथराइज़ेशन कोड फ्लो यूज़र को ऑथराइज़ेशन सर्वर के माध्यम से रूट करता है, जो ज़रूरत पड़ने पर यूज़र को ऑथेंटिकेट करता है और एक्सेस रिक्वेस्ट का मूल्यांकन करता है। अनुमोदन के बाद, ब्राउज़र पंजीकृत क्लाइंट रिडायरेक्ट लोकेशन पर एक अल्पकालिक ऑथराइज़ेशन कोड के साथ लौटता है। फिर क्लाइंट अपने क्लाइंट प्रकार के अनुरूप पैरामीटर और ऑथेंटिकेशन का उपयोग करते हुए उस कोड को टोकन एंडपॉइंट पर एक्सचेंज करता है।

कोड वह API क्रेडेंशियल नहीं है जिसका उपयोग कैलेंडर एंट्री या अन्य संरक्षित रिकॉर्ड पढ़ने के लिए किया जाता है। इसका उद्देश्य फ्रंट‑चैनल ऑथराइज़ेशन इंटरैक्शन को बाद के टोकन एक्सचेंज से जोड़ना है। रिडायरेक्ट URI वैलिडेशन को सख्त रखें और रिस्पॉन्स को उस ट्रांज़ैक्शन से बाँधें जिसे क्लाइंट ने शुरू किया था। किसी अप्रत्याशित origin पर प्राप्त या अपेक्षित ट्रांज़ैक्शन संदर्भ के बिना प्राप्त कॉलबैक को किसी प्रमाणित एप्लिकेशन सेशन में नहीं बदलना चाहिए।

क्लाइंट रजिस्ट्रेशन उसके रिडायरेक्ट लोकेशन और अनुमत ग्रांट जैसे विवरणों का वर्णन करता है। एक सर्वर एप्लिकेशन जो क्रेडेंशियल की सुरक्षा कर सकता है और ब्राउज़र‑डिलीवर किया गया पब्लिक एप्लिकेशन अलग‑अलग क्षमताएँ रखते हैं। किसी सर्वर‑साइड क्लाइंट सीक्रेट को डाउनलोड होने योग्य JavaScript में कॉपी न करें। एप्लिकेशन का डिस्ट्रीब्यूशन मॉडल यह निर्धारित करता है कि उस वैल्यू को गोपनीय रूप से रखा जा सकता है या नहीं, भले ही डैशबोर्ड में उसे जो भी लेबल दिया गया हो।

PKCE कोड एक्सचेंज की सुरक्षा करता है

PKCE, या Proof Key for Code Exchange, ट्रांज़ैक्शन‑विशिष्ट verifier का उपयोग करके ऑथराइज़ेशन रिक्वेस्ट और टोकन एक्सचेंज को बाँधता है। क्लाइंट verifier से एक challenge व्युत्पन्न करता है और उसे ऑथराइज़ेशन रिक्वेस्ट में शामिल करता है। टोकन एंडपॉइंट पर वह verifier प्रदान करता है, जिससे सर्वर यह पुष्टि कर सकता है कि एक्सचेंज उसी आरंभिक ट्रांज़ैक्शन से सम्बंधित है।

The PKCE mechanism ऑथराइज़ेशन कोड के इंटरसेप्शन को संबोधित करता है। PKCE किसी पब्लिक एप्लिकेशन को कॉन्फिडेंशियल क्लाइंट में नहीं बदलता, और verifier कोई स्थायी क्लाइंट पासवर्ड नहीं है। इसे विशिष्ट ट्रांज़ैक्शन के भीतर जेनरेट और संग्रहीत करें, सुरक्षित रखें, और ऐसा समर्थित challenge method उपयोग करें जो ऑथराइज़ेशन रिक्वेस्ट में verifier को उजागर न करे।

The current OAuth security best practice authorization code flow में public clients के लिए PKCE आवश्यक है और confidential clients के लिए इसकी अनुशंसा की जाती है। यह exact redirect matching, code injection, और token leakage को भी संबोधित करता है। ढीले-ढाले सम्बंधित snippets से flow जोड़कर बनाने के बजाय, उन आवश्यकताओं को किसी maintained OAuth implementation के माध्यम से लागू करें। सही libraries को भी सही issuer, redirect, और resource configuration की आवश्यकता होती है।

आर्टिफ़ैक्टउद्देश्यित भूमिकासामान्य भ्रम
Authorization codetoken exchange के लिए इनपुटइसे सीधे एक API access credential के रूप में उपयोग करना
Access tokenकिसी उद्देश्यित resource server के लिए credentialइसे एक सार्वभौमिक user identity assertion मान लेना
Refresh tokenauthorization server पर access tokens प्राप्त करने के लिए credentialइसे किसी business API को भेजना
ID tokenclient के लिए OpenID Connect identity assertionइसे API access token के स्थानापन्न के रूप में उपयोग करना
PKCE verifiercode exchange में transaction‑specific प्रमाणइसे permanent client secret की तरह मानना

Access Tokens और Refresh Tokens के अलग‑अलग Lifecycles होते हैं

एक access token में वह authorization होती है, या उसका संदर्भ होता है, जिसकी किसी resource service को आवश्यकता है। उसका फ़ॉर्मेट सामान्य OAuth framework द्वारा स्थिर नहीं किया गया है: कोई service opaque value या structured token, दोनों में से कुछ भी उपयोग कर सकती है। client को हर access token को readable JSON Web Token मान लेने के बजाय documented response fields और resource आवश्यकताओं पर निर्भर होना चाहिए।

Refresh token एक अलग credential है जिसे authorization server के साथ access tokens प्राप्त करने के लिए उपयोग किया जाता है। इसे सामान्य resource API को नहीं भेजा जाना चाहिए। server उसे जारी करेगा या नहीं, वह कितने समय तक वैध रहेगा, और उस पर कौन‑सी सुरक्षा लागू होगी, यह client और provider policy पर निर्भर करता है। इसे एक मूल्यवान secret की तरह सुरक्षित रखें, क्योंकि इसका lifecycle किसी एक access token से आगे तक बढ़ सकता है।

Revocation भी केवल किसी local string को delete कर देने से implied होने के बजाय एक परिभाषित interface रखती है। OAuth token revocation mechanism client को authorization server को यह सूचित करने की अनुमति देता है कि कोई token अब आवश्यक नहीं है। Local logout, grant revocation, और हर application session को समाप्त करना अलग‑अलग प्रभाव डाल सकते हैं। उन प्रभावों को दस्तावेज़ित करें ताकि उपयोगकर्ता समझ सकें कि किसी integration को disconnect करने पर वास्तव में क्या बदलता है।

Scope, Audience, और Server Policy Access को सीमित करते हैं

Scopes authorization system की vocabulary के भीतर अनुरोधित या प्रदत्त क्षमताओं का वर्णन करते हैं। उनके नाम और अर्थ provider के स्वामित्व में होते हैं। एक read‑oriented scope फिर भी संवेदनशील रिकॉर्ड्स को उजागर कर सकता है, इसलिए केवल वही माँगें जिसकी product feature को आवश्यकता है और कारण समझाएँ। कोई application केवल इस वजह से व्यापक write permissions नहीं माँगे कि इससे भविष्य का विकास आसान हो जाएगा।

उद्देश्यित resource या audience एक दूसरी सीमा है। किसी एक service के लिए जारी किया गया token किसी दूसरी service पर अदला‑बदली किए जा सकने वाले authorization के रूप में स्वीकार नहीं किया जाना चाहिए। Resource servers को चुने गए token mechanism का उपयोग करके संबंधित issuer, audience, expiry, और authorization विवरण की जाँच करनी चाहिए। एक मान्य signature अपने आप यह सिद्ध नहीं करती कि कोई credential अनुरोधित operation के लिए उपयुक्त है।

Client credentials flows उन application access संदर्भों को संबोधित करते हैं जो किसी उपयोगकर्ता की delegated consent का प्रतिनिधित्व नहीं करते। Device‑oriented flows अन्य interaction constraints को संबोधित करते हैं। हर product को किसी एक परिचित flow में ठूँसने के बजाय वास्तविक application type के लिए समर्थित grant चुनें। किसी service के documentation में OAuth की उपस्थिति का मतलब यह नहीं है कि हर grant, scope, या client type हर account के लिए उपलब्ध है।

Browser State को OAuth Credentials से अलग रखें

Browser cookies, कोई application session, और OAuth credentials आपस में संबंधित implementation चिंताएँ हैं, लेकिन इनके lifecycles अलग‑अलग होते हैं। कोई browser signed in रह सकता है जबकि कोई API token expire हो चुका हो, और कोई application किसी विशेष browser view के बंद हो जाने के बाद भी एक मान्य delegated token रख सकता है। अनुमति संबंधित विफलताओं का निदान उसी घटक पर करें जो प्रासंगिक credential का मालिक है, न कि browser state को असंबंधित services में कॉपी करके।

Scrapeless Agent Browser अधिकृत automation के लिए एक browser environment प्रदान करता है। इसकी session‑based automation overview किसी third‑party account के लिए OAuth grant नहीं बनाती। किसी automated workflow को वही resource‑owner consent, application permissions, और service access शर्तें बनाए रखनी चाहिए जो interface का उपयोग करने वाले किसी व्यक्ति से अपेक्षित होती हैं। Access denial फिर भी एक permission निर्णय ही रहता है, जिसे owning application के माध्यम से हल करना होता है।

" Scrapeless API key handling requirements Scrapeless products तक पहुँचने के लिए उपयोग किए जाने वाले एक अलग credential का वर्णन करती हैं। Scrapeless API key लक्षित वेबसाइट के लिए OAuth access token नहीं है। संबंधित API authentication methods credential schemes के बीच अंतर करने में मदद करते हैं, और Scrapeless pricing service उपयोग को कवर करता है, न कि third‑party authorization अधिकारों को।

किसी Delegated Integration की सीमा बढ़ाने से पहले उसकी समीक्षा करें

किसी delegated integration के पास एक स्पष्ट permission inventory होनी चाहिए। issuer, उद्देश्यित resources, requested scopes, client type, redirect locations, credential storage, और disconnect behavior को दर्ज करें। सामान्य application telemetry को token‑bearing request data से अलग रखें ताकि routine logs अनियंत्रित credential store न बन जाएँ। अधिकृत accounts और documented access levels के साथ permission boundaries का परीक्षण करें।

एक काल्पनिक कैलेंडर इंटीग्रेशन एक उपयोगकर्ता-द्वारा-स्वीकृत फ़ीचर के लिए केवल-पढ़ने की पहुँच से शुरू हो सकता है। इसकी स्वीकृति मानदंडों में सही खाता, अनुमत कैलेंडर संसाधन, कार्यशील डिसकनेक्ट पथ, और क्लाइंट को दिखाई देने वाले लॉग में सीक्रेट्स की अनुपस्थिति शामिल होनी चाहिए। अनुमतियों का विस्तार केवल तब करें जब किसी ठोस फ़ीचर को उनकी आवश्यकता हो। यह अनुशासन सहमति अनुरोध को समझाना आसान बनाता है और क्रेडेंशियल के खुलासे के परिणामों को सीमित करता है।

निष्कर्ष

OAuth परिभाषित भूमिकाओं, क्रेडेंशियल्स, और सर्वर नीति के माध्यम से विशिष्ट एक्सेस को सौंपता है। वास्तविक क्लाइंट प्रकार के लिए उपयुक्त फ़्लो चुनें, जहाँ आवश्यक हो PKCE का उपयोग करें, और पहचान अभिकथनों को संसाधन एक्सेस टोकन से अलग रखें। एक सुगम-रखरखाव इंटीग्रेशन अपने स्कोप्स, स्टोरेज सीमाओं, और डिसकनेक्ट व्यवहार को संवेदनशील खाता डेटा संभालने से पहले ही स्पष्ट कर देता है।

अपना वेब डेटा वर्कफ़्लो बनाएं

अनुमोदित ब्राउज़र वर्कफ़्लो के लिए Agent Browser का उपयोग करें, जबकि आपका एप्लिकेशन लक्ष्य सेवा की सहमति और क्रेडेंशियल सीमाओं को सुरक्षित रखता है।

आज ही साइन अप करें और पाएं $5 का निःशुल्क क्रेडिट — कोई क्रेडिट कार्ड आवश्यक नहीं.

अपना $5 क्रेडिट क्लेम करें →

सामान्य प्रश्न (FAQ)

क्या OAuth एक ऑथेंटिकेशन प्रोटोकॉल है?

OAuth मुख्य रूप से एक ऑथराइज़ेशन फ़्रेमवर्क है। एक फ़्लो के दौरान उपयोगकर्ता ऑथराइज़ेशन सर्वर पर ऑथेंटिकेट कर सकता है, लेकिन केवल OAuth क्लाइंट के लिए कोई सार्वभौमिक पहचान अभिकथन परिभाषित नहीं करता। OpenID Connect साइन-इन उपयोग मामलों के लिए एक मानकीकृत पहचान लेयर जोड़ता है।

क्या PKCE हर क्लाइंट सीक्रेट को बदल देता है?

PKCE हर क्लाइंट सीक्रेट को नहीं बदलता। यह एक ऑथराइज़ेशन कोड एक्सचेंज को एक विशेष प्रारंभिक लेन-देन से बाँधता है। कॉन्फिडेंशियल क्लाइंट अभी भी टोकन एंडपॉइंट पर ऑथेंटिकेट कर सकते हैं, जबकि पब्लिक क्लाइंट वितरित एप्लिकेशन कोड में एम्बेड किए गए साझा सीक्रेट पर सुरक्षित रूप से निर्भर नहीं हो सकते।

क्या OAuth एक्सेस टोकन हमेशा JWT होते हैं?

OAuth एक्सेस टोकन हमेशा JWT नहीं होते। कोई प्रदाता अपारदर्शी या संरचित क्रेडेंशियल जारी कर सकता है। प्रदाता के वैधता-परीक्षण और संसाधन-प्रवेश अनुबंध का पालन करें, और केवल उनके दिखने के आधार पर टोकन मानों को डिकोड या निर्मित न करें।

क्या एक रिफ़्रेश टोकन को संसाधन API पर भेजा जा सकता है?

एक रिफ़्रेश टोकन सामान्य संसाधन API पर नहीं, बल्कि ऑथराइज़ेशन सर्वर के समर्थित टोकन इंटरफ़ेस पर होता है। इसके स्टोरेज, एक्सेस, और लाइफ़साइकल को नियमित संसाधन अनुरोधों से अलग रखें। प्रदाता यह निर्धारित करता है कि एप्लिकेशन इसे प्राप्त करने के लिए पात्र है या नहीं।

क्या ब्राउज़र ऑटोमेशन OAuth अनुमतियाँ प्रदान करता है?

ब्राउज़र ऑटोमेशन अपने आप में OAuth अनुमतियाँ प्रदान नहीं करता। संसाधन-मालिक की सहमति और सर्वर नीति अभी भी अधिकृत कार्यों को निर्धारित करती हैं। केवल स्वीकृत स्कोप के भीतर आने वाले खातों और कार्रवाइयों का उपयोग करें, और ब्राउज़र प्लेटफ़ॉर्म के अपने क्रेडेंशियल को लक्ष्य सेवा द्वारा जारी क्रेडेंशियल से अलग रखें।

संदर्भ