OAuth के साथ Google खाता लिंक करना

खातों को लिंक करने के लिए, इंडस्ट्री के स्टैंडर्ड OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल किया जाता है.

एजेंट के लिए OAuth 2.1 और पीकेसीई

स्टेटलेस एआई एजेंट और मल्टी-मॉडल पाइपलाइन के लिए, OAuth 2.1 को लागू करने का सुझाव दिया जाता है.

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

आपकी सेवा में, OAuth 2.0/2.1 के मुताबिक ऑथराइज़ेशन और टोकन एक्सचेंज एंडपॉइंट काम करने चाहिए.

प्रोजेक्ट बनाना

खाता जोड़ने की सुविधा का इस्तेमाल करने के लिए, अपना प्रोजेक्ट बनाने के लिए:

  1. Google API Console पर जाएं.
  2. प्रोजेक्ट बनाएं पर क्लिक करें.
  3. कोई नाम डालें या जनरेट किए गए सुझाव को स्वीकार करें.
  4. बाकी बचे फ़ील्ड की पुष्टि करें या उनमें बदलाव करें.
  5. बनाएं पर क्लिक करें.

अपना प्रोजेक्ट आईडी देखने के लिए:

  1. Google API Console पर जाएं.
  2. लैंडिंग पेज पर मौजूद टेबल में, अपना प्रोजेक्ट ढूंढें. प्रोजेक्ट आईडी, आईडी कॉलम में दिखता है.

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

  1. Google APIs कंसोल के, उस स्क्रीन वाले पेज को खोलें जहां OAuth के लिए सहमति दी जाती है.
  2. अगर आपसे पूछा जाए, तो वह प्रोजेक्ट चुनें जिसे आपने अभी बनाया है.
  3. "OAuth के लिए सहमति वाली स्क्रीन" पेज पर, फ़ॉर्म भरें और “सेव करें” बटन पर क्लिक करें.

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

    ऐप्लिकेशन का लोगो: सहमति वाली स्क्रीन पर दिखने वाली इमेज. इससे उपयोगकर्ताओं को आपके ऐप्लिकेशन को पहचानने में मदद मिलेगी. लोगो, खाता जोड़ने के लिए सहमति वाली स्क्रीन और खाते की सेटिंग में दिखता है

    सहायता के लिए ईमेल पता: ताकि उपयोगकर्ता, सहमति से जुड़े सवालों के लिए आपसे संपर्क कर सकें.

    Google APIs के लिए स्कोप: स्कोप की मदद से, आपका ऐप्लिकेशन उपयोगकर्ता के निजी Google डेटा को ऐक्सेस कर सकता है. Google खाता जोड़ने के इस्तेमाल के मामले में, डिफ़ॉल्ट स्कोप (ईमेल, प्रोफ़ाइल, openid) काफ़ी है. आपको संवेदनशील स्कोप जोड़ने की ज़रूरत नहीं है. आम तौर पर, स्कोप के लिए अनुरोध, ऐक्सेस की ज़रूरत पड़ने पर ही करना चाहिए. पहले से अनुरोध करके रखना सही नहीं है. ज़्यादा जानें.

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

    ऐप्लिकेशन के होम पेज का लिंक: आपके ऐप्लिकेशन का होम पेज. यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.

    ऐप्लिकेशन की निजता नीति का लिंक: यह Google खाता जोड़ने के लिए सहमति वाली स्क्रीन पर दिखता है. यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.

    ऐप्लिकेशन की सेवा की शर्तों का लिंक (ज़रूरी नहीं): यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.

    पहली इमेज. Tunery नाम के काल्पनिक ऐप्लिकेशन के लिए, Google खाता जोड़ने के लिए सहमति वाली स्क्रीन

  4. "पुष्टि की स्थिति" देखें. अगर आपके ऐप्लिकेशन की पुष्टि की जानी है, तो "पुष्टि के लिए सबमिट करें" बटन पर क्लिक करके, अपने ऐप्लिकेशन को पुष्टि के लिए सबमिट करें. ज़्यादा जानकारी के लिए, OAuth की पुष्टि से जुड़ी ज़रूरी शर्तें देखें.

अपना OAuth सर्वर लागू करना

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

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

Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा: OAuth ऑथराइज़ेशन कोड फ़्लो

इस क्रम के डायग्राम में, उपयोगकर्ता, Google, और आपकी सेवा के एंडपॉइंट के बीच होने वाली इंटरैक्शन की जानकारी दी गई है.

User Google App / Browser Google Server Your Auth Endpoint Your Token Endpoint 1. उपयोगकर्ता खाता लिंक करने की प्रोसेस शुरू करता है 2. रीडायरेक्ट टू ऑथ एंडपॉइंट (GET) client_id, redirect_uri, state, scope 3. Display Sign-in & Consent Screen 4. उपयोगकर्ता पुष्टि करता है और सहमति देता है 5. Google पर वापस रीडायरेक्ट करें (GET) code, state 6. रीडायरेक्ट को मैनेज करें और कोड/स्टेट पास करें 7. टोकन एक्सचेंज (POST) grant_type=authorization_code, code 8. Return Tokens (200 OK) access_token, refresh_token 9. स्टोर के उपयोगकर्ता टोकन 10. उपयोगकर्ता के संसाधनों को ऐक्सेस करना
पहली इमेज. Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा के लिए, OAuth 2.0 के ऑथराइज़ेशन कोड फ़्लो में इवेंट का क्रम.

भूमिकाएं और ज़िम्मेदारियां

इस टेबल में, Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा (जीएएल) के OAuth फ़्लो में शामिल लोगों की भूमिकाओं और ज़िम्मेदारियों के बारे में बताया गया है. ध्यान दें कि GAL में, Google OAuth क्लाइंट के तौर पर काम करता है. वहीं, आपकी सेवा पहचान/सेवा देने वाली कंपनी के तौर पर काम करती है.

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

Google की ओर से शुरू किए गए OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो सेशन का फ़्लो इस तरह होता है:

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

लागू करने की रेसिपी

ऑथराइज़ेशन कोड फ़्लो लागू करने के लिए, यह तरीका अपनाएं.

पहला चरण: अनुमति के अनुरोधों को मैनेज करना

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

अनुरोध को मैनेज करने के लिए, ये कार्रवाइयां करें:

  1. अनुरोध की पुष्टि करें:

    • पुष्टि करें कि client_id, Google को असाइन किए गए क्लाइंट आईडी से मेल खाता हो.
    • पुष्टि करें कि redirect_uri, Google के रीडायरेक्ट किए जाने वाले यूआरएल से मेल खाता हो:
      • Prod: https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      • सैंडबॉक्स: https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
    • पुष्टि करें कि response_type code है.
  2. उपयोगकर्ता की पुष्टि करना:

    • यह कुकी यह पता लगाती है कि उपयोगकर्ता ने आपकी सेवा में साइन इन किया है या नहीं.
    • अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो उसे साइन इन या साइन-अप करने के लिए प्रॉम्प्ट करें.
  3. ऑथराइज़ेशन कोड जनरेट करें:

    • उपयोगकर्ता और क्लाइंट से जुड़ा एक यूनीक ऑथराइज़ेशन कोड बनाएं. यह ऐसा कोड होना चाहिए जिसका अनुमान लगाना मुश्किल हो.
    • कोड को करीब 10 मिनट में खत्म होने के लिए सेट करें.
  4. Google पर वापस रीडायरेक्ट करना:

    • ब्राउज़र को redirect_uri में दिए गए यूआरएल पर रीडायरेक्ट करें.
    • इन क्वेरी पैरामीटर को जोड़ें:
      • code: आपने जो ऑथराइज़ेशन कोड जनरेट किया है.
      • state: Google से मिली, बिना बदलाव वाली स्थिति की वैल्यू.

दूसरा चरण: टोकन एक्सचेंज करने के अनुरोधों को मैनेज करना

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

A. टोकन के लिए ऑथराइज़ेशन कोड बदलना

जब Google को ऑथराइज़ेशन कोड मिलता है, तो वह टोकन पाने के लिए, आपके टोकन एक्सचेंज एंडपॉइंट (POST) को कॉल करता है.

  1. अनुरोध की पुष्टि करें:

    • client_id और client_secret की पुष्टि करें.
    • पुष्टि करें कि ऑथराइज़ेशन कोड मान्य हो और उसकी समयसीमा खत्म न हुई हो.
    • पुष्टि करें कि redirect_uri, पहले चरण में इस्तेमाल की गई वैल्यू से मेल खाता हो.
    • पुष्टि न होने पर, {"error": "invalid_grant"} के साथ HTTP 400 Bad Request दिखाएं.
  2. टोकन जारी करना:

    • लंबे समय तक इस्तेमाल किया जा सकने वाला refresh_token और कम समय के लिए इस्तेमाल किया जा सकने वाला access_token (आम तौर पर, एक घंटे के लिए) जनरेट करें.
    • स्टैंडर्ड JSON टोकन रिस्पॉन्स के साथ एचटीटीपी 200 OK कोड दिखाएं.

B. ऐक्सेस टोकन रीफ़्रेश करना

ऐक्सेस टोकन की समयसीमा खत्म होने पर, Google रीफ़्रेश टोकन का इस्तेमाल करके नए टोकन का अनुरोध करता है.

  1. अनुरोध की पुष्टि करें:

    • client_id, client_secret, और refresh_token की पुष्टि करें.
    • पुष्टि न होने पर, {"error": "invalid_grant"} के साथ HTTP 400 Bad Request दिखाएं.
  2. नया ऐक्सेस टोकन जारी करना:

    • कम समय के लिए मान्य नई access_token जनरेट करें.
    • JSON टोकन रिस्पॉन्स के साथ एचटीटीपी 200 OK लौटाएं. इसमें नया रीफ़्रेश टोकन शामिल करना ज़रूरी नहीं है.
उपयोगकर्ता की जानकारी के अनुरोधों को मैनेज करना

userinfo एंडपॉइंट, OAuth 2.0 से सुरक्षित किया गया एक ऐसा संसाधन है जो लिंक किए गए उपयोगकर्ता के बारे में दावे दिखाता है. नीचे दिए गए इस्तेमाल के उदाहरणों को छोड़कर, userinfo एंडपॉइंट को लागू और होस्ट करना ज़रूरी नहीं है:

आपके टोकन एंडपॉइंट से ऐक्सेस टोकन पाने के बाद, Google आपके userinfo एंडपॉइंट पर एक अनुरोध भेजता है, ताकि लिंक किए गए उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी फिर से मिल सके.

userinfo एंडपॉइंट अनुरोध के हेडर
Authorization header बेयरर टाइप का ऐक्सेस टोकन.

उदाहरण के लिए, अगर आपका userinfo एंडपॉइंट यहां उपलब्ध है https://myservice.example.com/userinfo, अनुरोध कुछ ऐसा दिख सकता है:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

अपने userinfo एंडपॉइंट पर अनुरोधों को मैनेज करने के लिए यह तरीका अपनाएं:

  1. ऑथराइज़ेशन हेडर से ऐक्सेस टोकन निकालें और ऐक्सेस टोकन से जुड़े उपयोगकर्ता की जानकारी दिखाएं.
  2. अगर ऐक्सेस टोकन अमान्य है, तो WWW-Authenticate रिस्पॉन्स हेडर का इस्तेमाल करके, एचटीटीपी 401 बिना अनुमति वाली गड़बड़ी दिखाएं. नीचे userinfo गड़बड़ी के जवाब का एक उदाहरण दिया गया है:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    अगर लिंक करने की प्रोसेस के दौरान, बिना अनुमति वाली 401 या गड़बड़ी वाला कोई भी गड़बड़ी का मैसेज मिलता है, तो इस गड़बड़ी को ठीक नहीं किया जा सकेगा. साथ ही, वापस मिले टोकन को खारिज कर दिया जाएगा और उपयोगकर्ता को फिर से लिंक करने की प्रोसेस शुरू करनी होगी.
  3. अगर ऐक्सेस टोकन मान्य है, तो वापस जाएं और एचटीटीपीएस के मुख्य हिस्से में, यहां दिए गए JSON ऑब्जेक्ट के साथ एचटीटीपी 200 रिस्पॉन्स भेजें जवाब:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    अगर आपका userinfo एंडपॉइंट, एचटीटीपी 200 सक्सेस रिस्पॉन्स देता है, तो हासिल किए गए टोकन और दावे, उपयोगकर्ता के Google खाते से रजिस्टर किए जाते हैं.

    userinfo एंडपॉइंट रिस्पॉन्स
    sub एक यूनीक आईडी, जो आपके सिस्टम में उपयोगकर्ता की पहचान करता है.
    email उपयोगकर्ता का ईमेल पता.
    given_name ज़रूरी नहीं: उपयोगकर्ता का नाम.
    family_name ज़रूरी नहीं: उपयोगकर्ता का सरनेम.
    name ज़रूरी नहीं: उपयोगकर्ता का पूरा नाम.
    picture ज़रूरी नहीं: उपयोगकर्ता की प्रोफ़ाइल फ़ोटो.

लागू करने की पुष्टि करना

OAuth 2.0 Playground टूल का इस्तेमाल करके, लागू करने की पुष्टि की जा सकती है.

टूल में, यह तरीका अपनाएं:

  1. OAuth 2.0 कॉन्फ़िगरेशन विंडो खोलने के लिए, कॉन्फ़िगरेशन पर क्लिक करें.
  2. OAuth फ़्लो फ़ील्ड में, क्लाइंट-साइड चुनें.
  3. OAuth एंडपॉइंट फ़ील्ड में, कस्टम चुनें.
  4. अपने OAuth 2.0 एंडपॉइंट और Google को असाइन किया गया क्लाइंट आईडी, उससे जुड़े फ़ील्ड में डालें.
  5. पहला चरण सेक्शन में, कोई भी Google स्कोप न चुनें. इसके बजाय, इस फ़ील्ड को खाली छोड़ दें या अपने सर्वर के लिए मान्य स्कोप टाइप करें. अगर OAuth स्कोप का इस्तेमाल नहीं किया जाता है, तो कोई भी स्ट्रिंग टाइप करें. जब आपका काम पूरा हो जाए, तो एपीआई को अनुमति दें पर क्लिक करें.
  6. दूसरे चरण और तीसरे चरण सेक्शन में, OAuth 2.0 फ़्लो देखें. साथ ही, यह पुष्टि करें कि हर चरण उम्मीद के मुताबिक काम कर रहा है.

Google खाता लिंक करने की सुविधा का डेमो टूल का इस्तेमाल करके, लागू की गई सुविधा की पुष्टि की जा सकती है.

टूल में, यह तरीका अपनाएं:

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