उपयोगकर्ता की अनुमति देने की प्रक्रिया कैसे काम करती है

अगर आपको Google Identity Services या अनुमति के बारे में नहीं पता है या इनके बारे में आपको नहीं पता है, तो खास जानकारी वाला लेख पढ़ें.

Google, JavaScript लाइब्रेरी उपलब्ध कराता है. इसमें अनुमति देने वाली ऐसी सुविधाएं शामिल हैं जिनकी मदद से, स्कोप मैनेज करने, उपयोगकर्ता की सहमति लेने, और स्टैंडर्ड OAuth 2.0 फ़्लो का इस्तेमाल करके, आसानी से काम किया जा सकता है. उपयोगकर्ता के ब्राउज़र में चल रहा आपका वेब ऐप्लिकेशन, इस लाइब्रेरी का इस्तेमाल OAuth 2.0 इंप्लिसिट फ़्लो को मैनेज करने या आपके बैकएंड प्लैटफ़ॉर्म पर खत्म होने वाले ऑथराइज़ेशन कोड फ़्लो को शुरू करने के लिए करता है.

सिर्फ़ पुष्टि करने के दायरे

कई स्कोप का इस्तेमाल सिर्फ़ उपयोगकर्ता की पुष्टि करने के लिए किया जाता है: email, profile, और openid. अगर आपका ऐप्लिकेशन सिर्फ़ इन दायरों का इस्तेमाल करता है, तो देख लें कि उपयोगकर्ता के साइन अप और साइन इन के लिए, JWT आईडी टोकन और Google से साइन इन करें की सुविधा आपकी ज़रूरतों को पूरा करती है या नहीं. ज़्यादातर मामलों में, यह उपयोगकर्ता की पुष्टि के लिए उपलब्ध सबसे आसान और आसान तरीका है.

मुख्य शब्द और सिद्धांत

इन गाइड में यह माना गया है कि आपको OAuth 2.0 सिद्धांतों और RFC6749 जैसे आईईटीएफ़ मानकों की बुनियादी समझ है. अनुमति देने से जुड़ी सभी गाइड में, इन शब्दों का इस्तेमाल किया जाता है:

  • ऐक्सेस टोकन, Google की ओर से जारी किए गए हर उपयोगकर्ता क्रेडेंशियल के लिए कुछ समय तक इस्तेमाल किया जाता है. इसका इस्तेमाल Google API को सुरक्षित तरीके से कॉल करने और उपयोगकर्ता का डेटा ऐक्सेस करने के लिए किया जाता है.
  • ऑथराइज़ेशन कोड, Google की ओर से जारी किया गया एक अस्थायी कोड होता है. यह कोड, ऐसे उपयोगकर्ताओं की सुरक्षित तरीके से पहचान करने के लिए किया जाता है जिन्होंने किसी ब्राउज़र से अपने Google खाते में साइन इन किया है. आपका बैकएंड प्लैटफ़ॉर्म, ऐक्सेस और रीफ़्रेश टोकन के लिए इस कोड को बदलता है.
  • रीफ़्रेश टोकन, Google की ओर से जारी किया गया, लंबे समय तक इस्तेमाल किया जाने वाला एक क्रेडेंशियल होता है. इसे आपके प्लैटफ़ॉर्म पर सुरक्षित तरीके से सेव किया जाता है. इसका इस्तेमाल, उपयोगकर्ता के मौजूद न होने पर भी नया और मान्य ऐक्सेस टोकन पाने के लिए किया जा सकता है.
  • दायरा, उपयोगकर्ता के तय डेटा के लिए टोकन को सीमित करता है. ज़्यादा जानकारी के लिए, Google API के लिए OAuth 2.0 के स्कोप देखें.
  • पॉप-अप मोड एक ऑथराइज़ेशन कोड फ़्लो है. यह उपयोगकर्ता के ब्राउज़र में चल रहे JavaScript कॉलबैक पर आधारित होता है. Google आपके कॉलबैक हैंडलर को शुरू करेगा जो आपके प्लैटफ़ॉर्म पर ऑथराइज़ेशन कोड भेजने के लिए ज़िम्मेदार होता है. इसे पूरा करने का तरीका आप पर निर्भर करता है.
  • रीडायरेक्ट मोड, एचटीटीपी रीडायरेक्ट पर आधारित एक ऑथराइज़ेशन कोड का फ़्लो है. उपयोगकर्ता-एजेंट को सबसे पहले Google पर रीडायरेक्ट किया जाता है. Google से आपके प्लैटफ़ॉर्म के ऑथराइज़ेशन कोड एंडपॉइंट पर दूसरे रीडायरेक्ट में कोड शामिल होता है.

टोकन के लाइफ़टाइम को Google, जारी करने वाले के तौर पर सेट करता है. सटीक अवधि अलग-अलग हो सकती है. इसकी कई वजहें होती हैं.

OAuth 2.0 फ़्लो

इंप्लिसिट और ऑथराइज़ेशन कोड के साथ दो फ़्लो के बारे में बताया गया है. ये दोनों रणनीतियां Google API के साथ इस्तेमाल करने के लिए सही ऐक्सेस टोकन देते हैं.

हमारा सुझाव है कि ऑथराइज़ेशन कोड के फ़्लो का इस्तेमाल करें, क्योंकि इससे उपयोगकर्ता को बेहतर सुरक्षा मिलती है. इस फ़्लो में एक रीफ़्रेश टोकन भी मिलता है, जिसका इस्तेमाल उपयोगकर्ता की मौजूदगी के बिना भी ऐक्सेस टोकन पाने के लिए किया जा सकता है. इससे आपका प्लैटफ़ॉर्म, एसिंक्रोनस कार्रवाइयां आसानी से कर सकता है. जैसे, आखिरी समय में शेड्यूल की गई मीटिंग का एसएमएस रिमाइंडर भेजना. अनुमति देने वाला मॉडल चुनें और दो फ़्लो के बीच के अंतर के बारे में ज़्यादा जानकारी दें.

Google Identity Services की JavaScript लाइब्रेरी, OAuth 2.0 मानक का पालन करती है. ऐसा इन कामों के लिए किया जाता है:

  • अपने इन-ब्राउज़र वेब ऐप्लिकेशन को Google से तुरंत और आसानी से ऐक्सेस टोकन पाने में मदद करने के लिए, इंप्लिसिट फ़्लो को मैनेज करें. यह ऐक्सेस टोकन, Google API को कॉल करने के लिए ज़रूरी है.
  • उपयोगकर्ता के ब्राउज़र से ऑथराइज़ेशन कोड फ़्लो शुरू करें.

सामान्य तरीका

इंप्लिसिट फ़्लो और ऑथराइज़ेशन कोड फ़्लो, दोनों एक ही तरह से शुरू होते हैं:

  1. आपका ऐप्लिकेशन, एक या उससे ज़्यादा दायरों के ऐक्सेस का अनुरोध करता है.
  2. Google, उपयोगकर्ता को सहमति वाला डायलॉग दिखाता है. ज़रूरत पड़ने पर, सबसे पहले उपयोगकर्ता को उसके Google खाते में साइन इन किया जाता है.
  3. उपयोगकर्ता, अनुरोध किए गए हर दायरे को निजी तौर पर मंज़ूरी देता है.

इसके बाद, हर फ़्लो अलग-अलग चरणों में खत्म होता है.

इंप्लिसिट फ़्लो का इस्तेमाल करते समय

  • Google आपके ऐप्लिकेशन को सहमति के नतीजे की सूचना देने के लिए, कॉलबैक हैंडलर का इस्तेमाल करता है. साथ ही, वह अनुमति वाले किसी भी दायरे के लिए ऐक्सेस टोकन दिखाता है.

ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल करते समय

  • Google, हर उपयोगकर्ता के ऑथराइज़ेशन कोड के साथ जवाब देता है:
    • रीडायरेक्ट मोड में, कोड को आपके प्लैटफ़ॉर्म के ऑथराइज़ेशन कोड एंडपॉइंट पर वापस भेज दिया जाता है.
    • पॉप-अप मोड में, कोड को ब्राउज़र में मौजूद ऐप्लिकेशन के कॉलबैक हैंडलर में वापस भेज दिया जाता है. इसके लिए, उपयोगकर्ताओं को आपकी वेबसाइट छोड़ने की ज़रूरत नहीं पड़ती.
  • चौथे चरण से: OAuth 2.0 सर्वर से मिलने वाले रिस्पॉन्स मैनेज करना: आपका बैकएंड प्लैटफ़ॉर्म, Google के साथ सर्वर-टू-सर्वर एक्सचेंज को पूरा करता है. इस वजह से, हर उपयोगकर्ता के लिए एक रीफ़्रेश टोकन और ऐक्सेस टोकन को आपके प्लैटफ़ॉर्म पर लौटाया जाता है.

ऐक्सेस टोकन पाने से पहले, अलग-अलग उपयोगकर्ताओं को आपके ऐप्लिकेशन को अनुरोध किए गए दायरे को ऐक्सेस करने की सहमति देनी होगी. ऐसा करने के लिए, ऊपर दिए गए दूसरे चरण में Google, सहमति वाला डायलॉग दिखाता है और नतीजे को myaccount.google.com/permissions पर रिकॉर्ड करता है.

उपयोगकर्ता को आपके ऐप्लिकेशन का नाम, लोगो, निजता नीति, सेवा की शर्तें, और अनुरोध किए गए दायरे दिखाए जाते हैं. साथ ही, अनुरोध को स्वीकार या रद्द करने का विकल्प भी दिखाया जाता है.

पहली इमेज में, किसी एक स्कोप के लिए सहमति वाला डायलॉग दिखाया गया है. किसी एक दायरे का अनुरोध करने पर, किसी दायरे को स्वीकार या अस्वीकार करने के लिए, चेकबॉक्स की ज़रूरत नहीं होती.

'रद्द करें' या 'जारी रखें' बटन और एक स्कोप वाला उपयोगकर्ता सहमति संवाद. हालांकि, इसमें कोई चेकबॉक्स नहीं दिखाया जाता.

पहली इमेज: एक ही स्कोप वाला उपयोगकर्ता की सहमति वाला डायलॉग बॉक्स.

दूसरी इमेज में, एक से ज़्यादा स्कोप के लिए सहमति वाला डायलॉग दिखाया गया है. जब एक से ज़्यादा दायरे का अनुरोध किया जाता है, तब अलग-अलग चेकबॉक्स होते हैं. ये चेकबॉक्स, लोगों को हर दायरे को स्वीकार या अस्वीकार करने की अनुमति देते हैं.

उपयोगकर्ता की सहमति वाला डायलॉग बॉक्स, जिसमें 'रद्द करें' या 'जारी रखें' बटन और कई स्कोप हैं. हर दायरे में एक चेकबॉक्स चुनने वाला टूल होता है.

इमेज 2: कई स्कोप वाला उपयोगकर्ता की सहमति वाला डायलॉग.

उपयोगकर्ता खाते

सहमति की जानकारी देने और ऐक्सेस टोकन जारी करने के लिए, Google खाते की ज़रूरत होती है. इससे पहले उपयोगकर्ताओं को Google खाते में साइन इन करके, Google पर अपनी पहचान की पुष्टि करनी होगी.

हालांकि, यह ज़रूरी नहीं है, लेकिन यह सुझाव दिया जाता है कि 'Google से साइन इन करें' सुविधा का इस्तेमाल, आपके वेब ऐप्लिकेशन या बैकएंड प्लैटफ़ॉर्म में साइन अप और साइन इन करने के लिए किया जाए. ऐसा करने से, चरणों को पूरा करने को कम से कम उपयोगकर्ता समस्याओं को हल करने में मदद मिलती है. साथ ही, आपके पास अपने प्लैटफ़ॉर्म पर मौजूद अलग-अलग खातों के साथ ऐक्सेस टोकन जोड़ने की सुविधा भी होती है.

उदाहरण के लिए, 'Google से साइन इन करें' सुविधा का इस्तेमाल करने से एक चालू Google खाता सेशन बन जाता है. इससे उपयोगकर्ता को बाद में अनुमति का अनुरोध करते समय Google खाते में साइन-इन करने का अनुरोध करने की ज़रूरत नहीं होती. अगर आपने उपयोगकर्ता नाम और पासवर्ड या अन्य तरीकों से अपने ऐप्लिकेशन के लिए उपयोगकर्ताओं की पुष्टि की है, तो उन्हें अब भी सहमति के लिए पहले Google खाते में साइन इन करना होगा.

अनुमति देने की प्रोसेस शुरू करने के दौरान लॉगिन हिंट जोड़ने से, आम तौर पर Google खाते का ईमेल पता उपयोगकर्ता के Google खाते का ईमेल पता दिखाता है. इससे Google, खाता चुनने की सुविधा को स्किप कर सकता है. इससे, उपयोगकर्ताओं के लिए एक चरण बचता है. 'Google से साइन इन करें' सुविधा से मिले आईडी टोकन के क्रेडेंशियल में, उपयोगकर्ता का ईमेल पता शामिल होता है.

ऐसे वेब ऐप्लिकेशन जो सिर्फ़ ब्राउज़र पर काम करते हैं, उपयोगकर्ता की पुष्टि के लिए सिर्फ़ Google पर निर्भर हो सकते हैं. उन्होंने उपयोगकर्ता खाता मैनेजमेंट सिस्टम लागू न करने का विकल्प चुना है. इस स्थिति में, इंप्लिसिट फ़्लो के नाम से जाना जाता है. इसमें, रीफ़्रेश टोकन को उपयोगकर्ता खाते और सुरक्षित स्टोरेज को मैनेज करने के साथ जोड़ने की ज़रूरत नहीं है.

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

उपयोगकर्ता किसी भी समय अपने Google खाते की सेटिंग में जाकर, सहमति को देख या रद्द कर सकते हैं.

इसके अलावा, आपका वेब ऐप्लिकेशन या प्लैटफ़ॉर्म, टोकन रद्द करने और उपयोगकर्ता की सहमति हटाने के लिए, google.accounts.oauth2.revoke को कॉल कर सकता है. ऐसा तब किया जा सकता है, जब कोई उपयोगकर्ता आपके प्लैटफ़ॉर्म से अपना खाता मिटा दे.

अनुमति देने के दूसरे विकल्प

इसके अलावा, ब्राउज़र इंप्लिसिट फ़्लो का इस्तेमाल करके, ऐक्सेस टोकन पा सकते हैं. इसके लिए, वे सीधे Google के OAuth 2.0 एंडपॉइंट को कॉल करके, क्लाइंट-साइड वेब ऐप्लिकेशन के लिए OAuth 2.0 में बताए गए तरीके का इस्तेमाल कर सकते हैं.

इसी तरह, ऑथराइज़ेशन कोड फ़्लो के लिए, अपने तरीके लागू किए जा सकते हैं. साथ ही, वेब सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करना में बताया गया तरीका अपनाया जा सकता है.

दोनों ही मामलों में, हम Google Identity Services लाइब्रेरी का इस्तेमाल करने का सुझाव देते हैं. इससे डेटा को डेवलप करने में लगने वाला समय और मेहनत कम की जाती है. साथ ही, सुरक्षा से जुड़े जोखिमों को कम किया जाता है, जैसा कि OAuth 2.0 सुरक्षा के सबसे सही मौजूदा तरीकों में बताया गया है.