OAuth कैसे काम करता है?
Scrapeless Agent Browser अधिकृत वेबसाइट इंटरैक्शन के लिए cloud browser sessions प्रदान करता है, जबकि आपकी application अपनी integrations द्वारा उपयोग किए जाने वाले OAuth permissions और tokens के लिए स्वयं ज़िम्मेदार रहती है।
OAuth कैसे काम करता है?
OAuth किसी application को authorization server के माध्यम से, resource owner का पासवर्ड एकत्र किए बिना, protected resource तक सीमित access प्राप्त करने देता है। Application को एक access token मिलता है जो अनुमोदित grant का प्रतिनिधित्व करता है, और वह token resource server को प्रस्तुत किया जाता है। Resource server तय करता है कि क्या token अनुरोधित operation को authorize करता है।
OAuth एक authorization framework है। एक परिचित sign-in बटन में OAuth शामिल हो सकता है, लेकिन किसने sign in किया यह साबित करने के लिए एक identity protocol और उसके validation नियमों की आवश्यकता होती है। Permission और identity को अलग रखना application को हर सफल token विनिमय को उपयोगकर्ता की पहचान का पर्याप्त प्रमाण मानने से रोकता है।
संक्षेप में
- OAuth tokens के माध्यम से access डेलीगेट करता है। Application की permission grant और server policy द्वारा सीमित होती है।
- एक authorization code को tokens के लिए एक्सचेंज किया जाता है। Code वह credential नहीं है जो साधारण resource requests के लिए उपयोग किया जाता है।
- PKCE एक्सचेंज को initiating client से बाँधता है। Verifier को सही authorization transaction से संबद्ध रहना चाहिए।
- OAuth, login sessions, और API keys अलग-अलग तंत्र हैं। हर सेवा के documented authentication contract का पालन करें।
OAuth flow में कौन भाग लेता है?
एक OAuth flow में resource owner, client, authorization server, और resource server शामिल होते हैं। Resource owner access प्रदान कर सकता है। Client वह application है जो उस access का अनुरोध करती है। Authorization server अनुरोध का मूल्यांकन कर tokens जारी करता है। Resource server protected data या operation को होस्ट करता है।
वही OAuth authorization framework इन भूमिकाओं को परिभाषित करता है। एक ही organization दोनों server roles चला सकता है, लेकिन ज़िम्मेदारियाँ अलग रहती हैं। Authorization server पर सफल authentication अपने आप resource server पर हर operation को grant नहीं कर देती।
Scope किसी सेवा की शब्दावली के भीतर मांगी गई permission का नाम बताती है। एक calendar integration events को संशोधित करने के बजाय केवल पढ़ने की permission मांग सकती है। Provider यह परिभाषित करता है कि उन नामों का क्या अर्थ है और क्या उन्हें user, administrator, या किसी अन्य नीति द्वारा अनुमोदित किया जाना चाहिए। Client को केवल उतना ही access माँगना चाहिए जितना उसके उद्देश्य के लिए वास्तव में ज़रूरी हो।
Client का प्रकार मायने रखता है। Server application आम तौर पर नियंत्रित backend में credentials की रक्षा कर सकती है। Browser या mobile device पर भेजे गए code में embedded client secret को गोपनीय नहीं माना जा सकता। Client registration और चुना गया flow उस सीमा को प्रतिबिंबित करें।
Authorization Code With PKCE में क्या होता है?
Authorization code flow उपयोगकर्ता को authorization server पर निर्देशित करता है, पंजीकृत client redirect location पर एक code लौटाता है, और उस code को tokens के लिए एक्सचेंज करता है। PKCE authorization request को बाद के एक्सचेंज से जोड़ने के लिए एक verifier और उससे निकला challenge जोड़ता है।
- Client एक नई authorization transaction बनाता है, जिसमें verifier और उससे निकला challenge शामिल होता है, और response को validate करने के लिए आवश्यक state को रिकॉर्ड करता है।
- Client browser को पंजीकृत client identity, redirect location, माँगी गई permissions, और challenge के साथ authorization server पर भेजता है।
- Authorization server जरूरत के अनुसार user को authenticate करता है और consent तथा policy का मूल्यांकन करता है।
- Authorization server client की अनुमत redirect location पर एक authorization code लौटाता है।
- Client response को validate करता है और आवश्यक होने पर client authentication का उपयोग करते हुए token endpoint पर verifier के साथ code को एक्सचेंज करता है।
- Client grant के भीतर operations के लिए access token को लक्षित resource server को प्रस्तुत करता है।
वही PKCE challenge और verifier तंत्र इससे रोकता है कि केवल अवरोधित code का मालिक होना, जब server binding को सही तरह लागू करता है, एक्सचेंज पूरा करने के लिए पर्याप्त हो। Verifier transaction-विशिष्ट होता है। इसे किसी shared application constant में नहीं बदलना चाहिए।
PKCE अन्य हर validation को वैकल्पिक नहीं बनाता। Client को अब भी सही server का उपयोग करना, लौटाए गए response को validate करना, अपनी transaction state की रक्षा करना, और redirect नियमों का पालन करना होगा। Provider से मेल खाती हुई किसी maintained OAuth implementation का उपयोग करें, न कि असंबंधित snippets से flow जोड़ने की कोशिश करें।
Access, Refresh, और ID Tokens का क्या अर्थ है?
Access token resource access को authorize करता है, refresh token server policy के तहत replacement access tokens प्राप्त कर सकता है, और ID token OpenID Connect में authentication जानकारी convey करता है। इन tokens के अलग-अलग audience और validation आवश्यकताएँ होती हैं। किसी एक के स्थान पर दूसरे का उपयोग authorization त्रुटियाँ या सुरक्षा कमजोरियाँ पैदा कर सकता है।
Access token opaque भी हो सकता है या structured format भी उपयोग कर सकता है। यह न मानें कि हर OAuth token JWT है या token को decode करना उसके वैध होने का प्रमाण है। Resource server का contract निर्धारित करता है कि issuer, audience, expiry, signature, या server-side token state को कैसे जाँचना पड़ेगा।
Refresh token वैकल्पिक है। उसका issuance, storage आवश्यकताएँ, rotation व्यवहार, और revocation provider-विशिष्ट होते हैं। Client को यह नहीं मान लेना चाहिए कि प्रारंभिक grant के सफल होने से उसे अनिश्चितकालीन access मिल गया है। Scope परिवर्तन और account policy बाद की operations में क्या अनुमति है, इसे बदल सकते हैं।
OpenID Connect's identity layer OAuth के ऊपर ID tokens और authentication claims को परिभाषित करता है। Sign-in का उपयोग करने वाला client उस protocol और उसके provider configuration के अनुसार identity response को validate करे।
Client को किन सीमाओं की रक्षा करनी चाहिए?
क्लाइंट को रीडायरेक्ट हैंडलिंग, ट्रांज़ैक्शन एसोसिएशन, क्रेडेंशियल्स और हर टोकन के गंतव्य की सुरक्षा करनी चाहिए। OAuth इंटीग्रेशन सिर्फ HTTP रिक्वेस्ट्स की चेन नहीं, बल्कि भरोसे के निर्णयों का क्रम होता है। जो टोकन किसी एक API के लिए बनाया गया हो, उसे केवल इस वजह से किसी असंबंधित सर्विस को फ़ॉरवर्ड नहीं करना चाहिए कि दोनों ही authorization header स्वीकार करते हैं।
यह OAuth सुरक्षा की वर्तमान सर्वश्रेष्ठ प्रैक्टिस फ्लो के चयन और हमलों से बचाव के लिए मौजूदा सुरक्षा आधार-रेखा प्रदान करती है। पब्लिक क्लाइंट्स को PKCE का उपयोग करना ज़रूरी है; गोपनीय (confidential) क्लाइंट्स के लिए भी PKCE की सिफारिश की जाती है। रीडायरेक्ट मिलान और authorization response injection से सुरक्षा अभी भी डिज़ाइन के आवश्यक हिस्से हैं।
सर्वर-साइड सीक्रेट्स को डिप्लॉयमेंट के अनुमोदित सीक्रेट स्टोर में रखें। रिफ्रेश टोकन्स तक पहुँच को सीमित रखें और टोकन वैल्यूज़ को URLs, लॉग्स, एनालिटिक्स या सपोर्ट स्क्रीनशॉट्स में रखने से बचें। एक authorization code भी तब तक संवेदनशील हो सकता है जब तक वह उपयोग करने योग्य है, इसलिए callback लॉगिंग को सावधानी से कॉन्फ़िगर करने की आवश्यकता होती है।
यूज़र क्रेडेंशियल्स एकत्र करने के शॉर्टकट के रूप में resource owner password grant न चुनें। मौजूदा सुरक्षा दिशानिर्देश उस ग्रांट को अस्वीकार करते हैं। यूज़र की सहमति और एडमिनिस्ट्रेटर पॉलिसी को authorization सर्वर के समर्थित अनुभव के माध्यम से संभाला जाना चाहिए।
OAuth ब्राउज़र लॉगिन और API keys से कैसे भिन्न है?
ब्राउज़र लॉगिन सेशन वेबसाइट की स्थिति बनाए रखता है, एक API key किसी सर्विस की key पॉलिसी के तहत पहुँच की पहचान करती है, और OAuth एक authorization grant का प्रतिनिधित्व करता है। ये तंत्र एक ही वर्कफ़्लो में दिखाई दे सकते हैं, लेकिन परस्पर अदल-बदल नहीं होते। वेबसाइट cookies अपने-आप डेलीगेटेड API क्रेडेंशियल्स नहीं बन जातीं।
Scrapeless Agent Browser आपके एप्लिकेशन को अधिकृत इंटरैक्शंस के लिए ब्राउज़र वातावरण प्रदान करता है। यह उन सभी वेबसाइटों के लिए authorization सर्वर नहीं है जिन्हें ब्राउज़र विज़िट करता है। किसी consent पेज को खोलना ऑटोमेशन को उपयोगकर्ता के निर्देश से अधिक अनुमतियाँ अपने-आप मंज़ूर कर देने का अधिकार नहीं देता।
यह Scrapeless API key handling requirements बताती हैं कि Scrapeless सर्विस क्रेडेंशियल्स का उपयोग और सुरक्षा कैसे की जाती है। किसी असंबंधित प्रोवाइडर द्वारा जारी टोकन की तरह Scrapeless key के साथ OAuth bearer प्रीफ़िक्स जोड़ने या उसे वैसा मानने के बजाय उसी प्रलेखित key कॉन्ट्रैक्ट का पालन करें।
यह bounded collection worker deployment pattern सीक्रेट्स को पुन: प्रयोज्य एप्लिकेशन कोड से अलग करते समय प्रासंगिक होता है। एक OAuth इंटीग्रेशन को भी रनटाइम क्रेडेंशियल हैंडलिंग, एक्सेस कंट्रोल्स और वर्कर के उद्देश्य तथा उसे दी गई अनुमतियों के बीच स्पष्ट सीमा की आवश्यकता होती है।
एक डेलीगेटेड इंटीग्रेशन को कैसे डिज़ाइन किया जाएगा?
एक डेलीगेटेड इंटीग्रेशन एक परिभाषित यूज़र क्रिया और सबसे छोटे उपयोगी परमिशन सेट से शुरू होता है। एक उदाहरणात्मक रिपोर्टिंग एप्लिकेशन पर विचार करें जो किसी यूज़र की कैलेंडर उपलब्धता पढ़ता है। एप्लिकेशन अपने अनुमत callback को रजिस्टर करता है, प्रोवाइडर के समर्थित authorization फ्लो का चयन करता है, और व्यापक अकाउंट प्रशासन के बजाय केवल उपलब्धता के लिए आवश्यक परमिशन का अनुरोध करता है।
callback के बाद, बैकएंड ट्रांज़ैक्शन को वैलिडेट करता है और अनुमत क्रेडेंशियल सामग्री को सुरक्षित रूप से स्टोर करता है। रिसोर्स रिक्वेस्ट लक्षित API पर जाता है और दिए गए scope के तहत मूल्यांकन किया जाता है। एप्लिकेशन कनेक्शन की स्थिति रिकॉर्ड करता है बिना यूज़र-फेसिंग लॉग्स में टोकन को उजागर किए।
डिसकनेक्शन के लिए स्पष्ट डिज़ाइन की आवश्यकता होती है। लोकली स्टोर किए गए क्रेडेंशियल्स हटाएँ और जहाँ उपयुक्त हो, प्रोवाइडर के समर्थित revocation नियंत्रणों का उपयोग करें। यूज़र्स को यह समझाएँ कि क्या एप्लिकेशन को डिसकनेक्ट करने से सर्वर-साइड अनुमति भी रद्द हो जाती है। ये क्रियाएँ आपस में संबंधित हैं लेकिन हमेशा समान प्रभाव नहीं रखतीं।
अस्वीकृत consent, मेल न खाने वाले callbacks, समाप्त हो चुकी ट्रांज़ैक्शन स्थिति, और अपर्याप्त scope को सफल पथ के साथ-साथ टेस्ट करें। नियंत्रित प्रोवाइडर टेस्ट वातावरण, किसी उदाहरणात्मक अनुक्रम को वास्तविक authorization रन माने बिना, व्यवहार की पुष्टि कर सकता है। यह वैचारिक उदाहरण किसी लाइव अकाउंट grant का दावा नहीं करता।
निष्कर्ष
OAuth को परमिशन grant के अनुक्रम से ट्रेस करें: किसने उसे मंज़ूर किया, कौन-सा क्लाइंट उसे प्राप्त करता है, कौन-सा संसाधन उसे स्वीकार करता है, और वह कितने समय तक उपयोगी रहता है। ब्राउज़र सेशन और सर्विस API keys को अलग रखें। ब्राउज़र-आधारित वर्कफ़्लो के लिए, लक्ष्य प्रोवाइडर की permissions और API नीतियों से स्वतंत्र रूप से Scrapeless pricing की समीक्षा करें।
कलेक्शन लेयर को व्यवहार में लागू करें
अपने स्रोत से मेल खाने वाली Scrapeless collection क्षमता चुनें, फिर ऊपर वर्णित वैलिडेशन और परिचालन निर्णय लागू करें।
आज ही साइन अप करें और पाएँ $5 in free credit — कोई क्रेडिट कार्ड आवश्यक नहीं.
अपना $5 क्रेडिट क्लेम करें →FAQ
क्या OAuth एक लॉगिन प्रोटोकॉल है?
OAuth पहुँच डेलीगेट करता है; OpenID Connect मानकीकृत ऑथेंटिकेशन जानकारी जोड़ता है। लॉगिन इम्प्लीमेंटेशन को इस बात की ज़रूरत होती है कि वह आइडेंटिटी प्रोटोकॉल के वैलिडेशन नियमों का पालन करे, न कि यह मान ले कि कोई access token अपने-आप यूज़र की पहचान करता है।
क्या किसी public client को client secret की आवश्यकता होती है?
एक public client एम्बेडेड सीक्रेट की विश्वसनीय रूप से रक्षा नहीं कर सकता। उसके लिए रजिस्टर किए गए public-client फ्लो को PKCE और प्रोवाइडर की प्रलेखित आवश्यकताओं के साथ उपयोग करें, shipped कोड को secret store मानने के बजाय।
क्या सभी OAuth tokens JWTs होते हैं?
नहीं। Access tokens अपारदर्शी (opaque) या संरचित हो सकते हैं। उनका फ़ॉर्मेट और वैलिडेशन authorization सर्वर और resource सर्वर के कॉन्ट्रैक्ट पर निर्भर करता है।
क्या ब्राउज़र ऑटोमेशन किसी भी अनुरोधित scope को grant कर सकता है?
नहीं। ऑटोमेशन को यूज़र के अधिकृत उद्देश्य और प्रोवाइडर की पॉलिसी के भीतर ही रहना चाहिए। एक दिखाई देने वाली consent स्क्रीन अनुमतियों का निर्णय है, न कि सामान्य नेविगेशन चरण।