खातों को लिंक करने के लिए, इंडस्ट्री के स्टैंडर्ड OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल किया जाता है.
एजेंट के लिए OAuth 2.1 और पीकेसीई
स्टेटलेस एआई एजेंट और मल्टी-मॉडल पाइपलाइन के लिए, OAuth 2.1 को लागू करने का सुझाव दिया जाता है.
- पीकेसीई (प्रूफ़ की फ़ॉर कोड एक्सचेंज): ऑथराइज़ेशन कोड फ़्लो को सुरक्षित करने के लिए, इसका इस्तेमाल करना ज़रूरी है. इससे इंटरसेप्शन हमलों को रोका जा सकता है.
- इंप्लिसिट फ़्लो उपलब्ध नहीं है: इंप्लिसिट फ़्लो, यूआरएल में ऐक्सेस टोकन दिखाता है, इससे एजेंट के एनवायरमेंट के लिए सुरक्षा से जुड़ा जोखिम पैदा होता है.
आपकी सेवा में, OAuth 2.0/2.1 के मुताबिक ऑथराइज़ेशन और टोकन एक्सचेंज एंडपॉइंट काम करने चाहिए.
प्रोजेक्ट बनाना
खाता जोड़ने की सुविधा का इस्तेमाल करने के लिए, अपना प्रोजेक्ट बनाने के लिए:
- Google API Console पर जाएं.
- प्रोजेक्ट बनाएं पर क्लिक करें.
- कोई नाम डालें या जनरेट किए गए सुझाव को स्वीकार करें.
- बाकी बचे फ़ील्ड की पुष्टि करें या उनमें बदलाव करें.
- बनाएं पर क्लिक करें.
अपना प्रोजेक्ट आईडी देखने के लिए:
- Google API Console पर जाएं.
- लैंडिंग पेज पर मौजूद टेबल में, अपना प्रोजेक्ट ढूंढें. प्रोजेक्ट आईडी, आईडी कॉलम में दिखता है.
उस स्क्रीन को कॉन्फ़िगर करना जहां OAuth के लिए सहमति दी जाती है
Google खाता जोड़ने की प्रोसेस में, सहमति वाली स्क्रीन शामिल होती है. इस स्क्रीन पर उपयोगकर्ताओं को यह जानकारी मिलती है कि कौनसे ऐप्लिकेशन उनके डेटा को ऐक्सेस करने का अनुरोध कर रहे हैं, वे किस तरह का डेटा मांग रहे हैं, और उन पर कौनसी शर्तें लागू होती हैं. Google API क्लाइंट आईडी जनरेट करने से पहले, आपको उस स्क्रीन को कॉन्फ़िगर करना होगा जहां OAuth के लिए सहमति दी जाती है.
- Google APIs कंसोल के, उस स्क्रीन वाले पेज को खोलें जहां OAuth के लिए सहमति दी जाती है.
- अगर आपसे पूछा जाए, तो वह प्रोजेक्ट चुनें जिसे आपने अभी बनाया है.
"OAuth के लिए सहमति वाली स्क्रीन" पेज पर, फ़ॉर्म भरें और “सेव करें” बटन पर क्लिक करें.
ऐप्लिकेशन का नाम: सहमति का अनुरोध करने वाले ऐप्लिकेशन का नाम. नाम से आपके ऐप्लिकेशन की सही जानकारी मिलनी चाहिए. साथ ही, यह नाम उपयोगकर्ताओं को अन्य जगहों पर दिखने वाले ऐप्लिकेशन के नाम से मेल खाना चाहिए. ऐप्लिकेशन का नाम, खाता जोड़ने के लिए सहमति वाली स्क्रीन पर दिखेगा.
ऐप्लिकेशन का लोगो: सहमति वाली स्क्रीन पर दिखने वाली इमेज. इससे उपयोगकर्ताओं को आपके ऐप्लिकेशन को पहचानने में मदद मिलेगी. लोगो, खाता जोड़ने के लिए सहमति वाली स्क्रीन और खाते की सेटिंग में दिखता है
सहायता के लिए ईमेल पता: ताकि उपयोगकर्ता, सहमति से जुड़े सवालों के लिए आपसे संपर्क कर सकें.
Google APIs के लिए स्कोप: स्कोप की मदद से, आपका ऐप्लिकेशन उपयोगकर्ता के निजी Google डेटा को ऐक्सेस कर सकता है. Google खाता जोड़ने के इस्तेमाल के मामले में, डिफ़ॉल्ट स्कोप (ईमेल, प्रोफ़ाइल, openid) काफ़ी है. आपको संवेदनशील स्कोप जोड़ने की ज़रूरत नहीं है. आम तौर पर, स्कोप के लिए अनुरोध, ऐक्सेस की ज़रूरत पड़ने पर ही करना चाहिए. पहले से अनुरोध करके रखना सही नहीं है. ज़्यादा जानें.
अनुमति वाले डोमेन: Google, आपको और आपके उपयोगकर्ताओं को सुरक्षित रखने के लिए, सिर्फ़ उन ऐप्लिकेशन को अनुमति वाले डोमेन का इस्तेमाल करने की अनुमति देता है जो OAuth का इस्तेमाल करके पुष्टि करते हैं. आपके ऐप्लिकेशन के लिंक, अनुमति वाले डोमेन पर होस्ट किए जाने चाहिए. ज़्यादा जानें.
ऐप्लिकेशन के होम पेज का लिंक: आपके ऐप्लिकेशन का होम पेज. यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.
ऐप्लिकेशन की निजता नीति का लिंक: यह Google खाता जोड़ने के लिए सहमति वाली स्क्रीन पर दिखता है. यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.
ऐप्लिकेशन की सेवा की शर्तों का लिंक (ज़रूरी नहीं): यह अनुमति वाले डोमेन पर होस्ट किया जाना चाहिए.
पहली इमेज. Tunery नाम के काल्पनिक ऐप्लिकेशन के लिए, Google खाता जोड़ने के लिए सहमति वाली स्क्रीन
"पुष्टि की स्थिति" देखें. अगर आपके ऐप्लिकेशन की पुष्टि की जानी है, तो "पुष्टि के लिए सबमिट करें" बटन पर क्लिक करके, अपने ऐप्लिकेशन को पुष्टि के लिए सबमिट करें. ज़्यादा जानकारी के लिए, OAuth की पुष्टि से जुड़ी ज़रूरी शर्तें देखें.
अपना OAuth सर्वर लागू करना
OAuth 2.0 सर्वर के ऑथराइज़ेशन कोड फ़्लो को लागू करने के लिए, दो एंडपॉइंट की ज़रूरत होती है. आपकी सेवा, इन्हें HTTPS के ज़रिए उपलब्ध कराती है. पहला एंडपॉइंट, ऑथराइज़ेशन एंडपॉइंट होता है. यह डेटा का ऐक्सेस करने के लिए, उपयोगकर्ताओं की सहमति लेने या सहमति का पता लगाने के लिए ज़िम्मेदार होता है. ऑथराइज़ेशन एंडपॉइंट, उन लोगों को साइन-इन यूज़र इंटरफ़ेस (यूआई) दिखाता है जिन्होंने पहले से साइन इन नहीं किया है. साथ ही, यह अनुरोध किए गए ऐक्सेस के लिए सहमति रिकॉर्ड करता है. दूसरा एंडपॉइंट, टोकन एक्सचेंज एंडपॉइंट होता है. इसका इस्तेमाल एन्क्रिप्ट (सुरक्षित) की गई स्ट्रिंग पाने के लिए किया जाता है. इन्हें टोकन कहा जाता है. ये टोकन, किसी उपयोगकर्ता को आपकी सेवा ऐक्सेस करने की अनुमति देते हैं.
जब किसी Google ऐप्लिकेशन को आपकी सेवा के किसी एपीआई को कॉल करने की ज़रूरत होती है, तो Google इन एंडपॉइंट का इस्तेमाल एक साथ करता है. इससे, वह आपके उपयोगकर्ताओं से उनकी ओर से इन एपीआई को कॉल करने की अनुमति ले पाता है.
Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा: OAuth ऑथराइज़ेशन कोड फ़्लो
इस क्रम के डायग्राम में, उपयोगकर्ता, Google, और आपकी सेवा के एंडपॉइंट के बीच होने वाली इंटरैक्शन की जानकारी दी गई है.
भूमिकाएं और ज़िम्मेदारियां
इस टेबल में, Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा (जीएएल) के OAuth फ़्लो में शामिल लोगों की भूमिकाओं और ज़िम्मेदारियों के बारे में बताया गया है. ध्यान दें कि GAL में, Google OAuth क्लाइंट के तौर पर काम करता है. वहीं, आपकी सेवा पहचान/सेवा देने वाली कंपनी के तौर पर काम करती है.
| ऐक्टर / कॉम्पोनेंट | जीएएल की भूमिका | ज़िम्मेदारियां |
|---|---|---|
| Google ऐप्लिकेशन / सर्वर | OAuth क्लाइंट | यह फ़्लो शुरू करता है, ऑथराइज़ेशन कोड पाता है, उसे टोकन के लिए बदलता है, और उन्हें सुरक्षित तरीके से सेव करता है, ताकि आपकी सेवा के एपीआई को ऐक्सेस किया जा सके. |
| आपका ऑथराइज़ेशन एंडपॉइंट | अनुमति देने वाला सर्वर | यह कुकी, आपके उपयोगकर्ताओं की पुष्टि करती है. साथ ही, Google के साथ उनके डेटा का ऐक्सेस शेयर करने के लिए उनकी सहमति लेती है. |
| आपका टोकन एक्सचेंज एंडपॉइंट | अनुमति देने वाला सर्वर | यह ऑथराइज़ेशन कोड और रीफ़्रेश टोकन की पुष्टि करता है. साथ ही, Google सर्वर को ऐक्सेस टोकन जारी करता है. |
| Google रीडायरेक्ट यूआरआई | कॉलबैक एंडपॉइंट | यह कुकी, आपकी अनुमति देने वाली सेवा से उपयोगकर्ता को रीडायरेक्ट करती है. इसमें code और state वैल्यू होती हैं. |
Google की ओर से शुरू किए गए OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो सेशन का फ़्लो इस तरह होता है:
- Google, उपयोगकर्ता के ब्राउज़र में आपका ऑथराइज़ेशन एंडपॉइंट खोलता है. अगर किसी कार्रवाई के लिए, सिर्फ़ आवाज़ से कंट्रोल होने वाले डिवाइस पर फ़्लो शुरू किया गया है, तो Google उस कार्रवाई को फ़ोन पर ट्रांसफ़र कर देता है.
- अगर उपयोगकर्ता ने पहले से साइन इन नहीं किया है, तो वह साइन इन करता है. इसके बाद, वह Google को आपके एपीआई की मदद से अपना डेटा ऐक्सेस करने की अनुमति देता है.
- आपकी सेवा, ऑथराइज़ेशन कोड बनाती है और उसे Google को भेजती है. इसके लिए, उपयोगकर्ता के ब्राउज़र को वापस Google पर रीडायरेक्ट करें. साथ ही, अनुरोध से जुड़ा ऑथराइज़ेशन कोड अटैच करें.
- Google, ऑथराइज़ेशन कोड को आपके टोकन एक्सचेंज एंडपॉइंट पर भेजता है. यह कोड की पुष्टि करता है और ऐक्सेस टोकन और रीफ़्रेश टोकन दिखाता है. ऐक्सेस टोकन, कम समय तक चलने वाला टोकन होता है. आपकी सेवा, एपीआई को ऐक्सेस करने के लिए क्रेडेंशियल के तौर पर इसे स्वीकार करती है. रीफ़्रेश टोकन की समयसीमा लंबी होती है. Google इसे सेव कर सकता है और इसकी मदद से, ऐक्सेस टोकन की समयसीमा खत्म होने पर नए ऐक्सेस टोकन हासिल कर सकता है.
- उपयोगकर्ता के खाता लिंक करने की प्रोसेस पूरी करने के बाद, Google से भेजे गए हर अनुरोध में ऐक्सेस टोकन शामिल होता है.
लागू करने की रेसिपी
ऑथराइज़ेशन कोड फ़्लो लागू करने के लिए, यह तरीका अपनाएं.
पहला चरण: अनुमति के अनुरोधों को मैनेज करना
जब Google खाता लिंक करने की प्रोसेस शुरू करता है, तो वह उपयोगकर्ता को आपके अनुमति देने वाले एंडपॉइंट पर रीडायरेक्ट करता है. प्रोटोकॉल के कानूनी समझौतों और पैरामीटर की ज़रूरी शर्तों के बारे में ज़्यादा जानने के लिए, ऑथराइज़ेशन एंडपॉइंट देखें.
अनुरोध को मैनेज करने के लिए, ये कार्रवाइयां करें:
अनुरोध की पुष्टि करें:
- पुष्टि करें कि
client_id, Google को असाइन किए गए क्लाइंट आईडी से मेल खाता हो. - पुष्टि करें कि
redirect_uri, Google के रीडायरेक्ट किए जाने वाले यूआरएल से मेल खाता हो:- Prod:
https://oauth-redirect.googleusercontent.com/r/YOUR_PARTNER_ID - सैंडबॉक्स:
https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PARTNER_ID
- Prod:
- पुष्टि करें कि
response_typecodeहै.
- पुष्टि करें कि
उपयोगकर्ता की पुष्टि करना:
- यह कुकी यह पता लगाती है कि उपयोगकर्ता ने आपकी सेवा में साइन इन किया है या नहीं.
- अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो उसे साइन इन या साइन-अप करने के लिए प्रॉम्प्ट करें.
ऑथराइज़ेशन कोड जनरेट करें:
- उपयोगकर्ता और क्लाइंट से जुड़ा एक यूनीक ऑथराइज़ेशन कोड बनाएं. यह ऐसा कोड होना चाहिए जिसका अनुमान लगाना मुश्किल हो.
- कोड को करीब 10 मिनट में खत्म होने के लिए सेट करें.
Google पर वापस रीडायरेक्ट करना:
- ब्राउज़र को
redirect_uriमें दिए गए यूआरएल पर रीडायरेक्ट करें. - इन क्वेरी पैरामीटर को जोड़ें:
code: आपने जो ऑथराइज़ेशन कोड जनरेट किया है.state: Google से मिली, बिना बदलाव वाली स्थिति की वैल्यू.
- ब्राउज़र को
दूसरा चरण: टोकन एक्सचेंज करने के अनुरोधों को मैनेज करना
टोकन एक्सचेंज एंडपॉइंट, दो तरह के अनुरोधों को प्रोसेस करता है: कोड के बदले टोकन पाना और समयसीमा खत्म हो चुके ऐक्सेस टोकन को रीफ़्रेश करना. प्रोटोकॉल के बारे में ज़्यादा जानकारी और पैरामीटर से जुड़ी ज़रूरी शर्तों के लिए, टोकन एक्सचेंज एंडपॉइंट देखें.
A. टोकन के लिए ऑथराइज़ेशन कोड बदलना
जब Google को ऑथराइज़ेशन कोड मिलता है, तो वह टोकन पाने के लिए, आपके टोकन एक्सचेंज एंडपॉइंट (POST) को कॉल करता है.
अनुरोध की पुष्टि करें:
client_idऔरclient_secretकी पुष्टि करें.- पुष्टि करें कि ऑथराइज़ेशन कोड मान्य हो और उसकी समयसीमा खत्म न हुई हो.
- पुष्टि करें कि
redirect_uri, पहले चरण में इस्तेमाल की गई वैल्यू से मेल खाता हो. - पुष्टि न होने पर,
{"error": "invalid_grant"}के साथ HTTP400 Bad Requestदिखाएं.
टोकन जारी करना:
- लंबे समय तक इस्तेमाल किया जा सकने वाला
refresh_tokenऔर कम समय के लिए इस्तेमाल किया जा सकने वालाaccess_token(आम तौर पर, एक घंटे के लिए) जनरेट करें. - स्टैंडर्ड JSON टोकन रिस्पॉन्स के साथ एचटीटीपी
200 OKवापस भेजें.
- लंबे समय तक इस्तेमाल किया जा सकने वाला
B. ऐक्सेस टोकन रीफ़्रेश करना
ऐक्सेस टोकन की समयसीमा खत्म होने पर, Google रीफ़्रेश टोकन का इस्तेमाल करके नए टोकन का अनुरोध करता है.
अनुरोध की पुष्टि करें:
client_id,client_secret, औरrefresh_tokenकी पुष्टि करें.- पुष्टि न होने पर,
{"error": "invalid_grant"}के साथ HTTP400 Bad Requestदिखाएं.
नया ऐक्सेस टोकन जारी करें:
- कम समय के लिए मान्य नई
access_tokenजनरेट करें. - JSON टोकन रिस्पॉन्स के साथ एचटीटीपी
200 OKलौटाएं. इसमें नया रीफ़्रेश टोकन शामिल करना ज़रूरी नहीं है.
- कम समय के लिए मान्य नई
Handle userinfo requests
The userinfo endpoint is an OAuth 2.0 protected resource that return claims about the linked user. Implementing and hosting the userinfo endpoint is optional, except for the following use cases:
- Linked Account Sign-In with Google One Tap.
- Frictionless subscription on AndroidTV.
After the access token has been successfully retrieved from your token endpoint, Google sends a request to your userinfo endpoint to retrieve basic profile information about the linked user.
| userinfo endpoint request headers | |
|---|---|
Authorization header |
The access token of type Bearer. |
For example, if your userinfo endpoint is available at
https://myservice.example.com/userinfo, a request might look like the following:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
For your userinfo endpoint to handle requests, do the following steps:
- Extract access token from the Authorization header and return information for the user associated with the access token.
- If the access token is invalid, return an HTTP 401 Unauthorized error with using the
WWW-AuthenticateResponse Header. Below is an example of a userinfo error response: If a 401 Unauthorized, or any other unsuccessful error response is returned during the linking process, the error will be non-recoverable, the retrieved token will be discarded and the user will have to initiate the linking process again.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
If the access token is valid, return and HTTP 200 response with the following JSON object in the body of the HTTPS response:
If your userinfo endpoint returns an HTTP 200 success response, the retrieved token and claims are registered against the user's Google account.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }userinfo endpoint response subA unique ID that identifies the user in your system. emailEmail address of the user. given_nameOptional: First name of the user. family_nameOptional: Last name of the user. nameOptional: Full name of the user. pictureOptional: Profile picture of the user.
लागू करने की पुष्टि करना
You can validate your implementation by using the OAuth 2.0 Playground tool.
In the tool, do the following steps:
- Click Configuration to open the OAuth 2.0 Configuration window.
- In the OAuth flow field, select Client-side.
- In the OAuth Endpoints field, select Custom.
- Specify your OAuth 2.0 endpoint and the client ID you assigned to Google in the corresponding fields.
- In the Step 1 section, don't select any Google scopes. Instead, leave this field blank or type a scope valid for your server (or an arbitrary string if you don't use OAuth scopes). When you're done, click Authorize APIs.
- In the Step 2 and Step 3 sections, go through the OAuth 2.0 flow and verify that each step works as intended.
You can validate your implementation by using the Google Account Linking Demo tool.
In the tool, do the following steps:
- Click the Sign in with Google button.
- Choose the account you'd like to link.
- Enter the service ID.
- Optionally enter one or more scopes that you will request access for.
- Click Start Demo.
- When prompted, confirm that you may consent and deny the linking request.
- Confirm that you are redirected to your platform.