खातों को लिंक करने के लिए, इंडस्ट्री के स्टैंडर्ड 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लौटाएं. इसमें नया रीफ़्रेश टोकन शामिल करना ज़रूरी नहीं है.
- कम समय के लिए मान्य नई
处理 userinfo 请求
userinfo 端点是受 OAuth 2.0 保护的资源,会返回关联用户的声明。实现和托管 userinfo 端点是可选的,但以下用例除外:
从您的令牌端点成功检索到访问令牌后,Google 会向您的 userinfo 端点发送请求,以检索关联用户的基本个人资料信息。
| userinfo 端点请求标头 | |
|---|---|
Authorization header |
Bearer 类型的访问令牌。 |
例如,如果您的 userinfo 端点可通过
https://myservice.example.com/userinfo 时,请求可能如下所示:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
为了让 userinfo 端点能够处理请求,请执行以下步骤:
- 从 Authorization 标头中提取访问令牌,并返回与访问令牌相关联的用户的信息。
- 如果访问令牌无效,则使用
WWW-Authenticate响应标头返回 HTTP 401 Unauthorized 错误。下面是一个 userinfo 错误响应示例: 如果在关联过程中返回 401 未经授权错误或任何其他失败的错误响应,该错误将无法恢复,检索到的令牌将被舍弃,并且用户必须重新开始关联流程。HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
如果访问令牌有效,则返回 HTTPS 正文中包含以下 JSON 对象的 HTTP 200 响应 回答:
如果您的 userinfo 端点返回 HTTP 200 成功响应,则系统会针对用户的 Google 账号注册检索到的令牌和声明。{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }userinfo 端点响应 sub系统中用于识别用户的唯一 ID。 email用户的电子邮件地址。 given_name可选:用户的名字。 family_name可选:用户的姓氏。 name可选:用户的全名。 picture可选:用户的个人资料照片。
लागू करने की पुष्टि करना
OAuth 2.0 Playground टूल का इस्तेमाल करके, लागू करने की पुष्टि की जा सकती है.
टूल में, यह तरीका अपनाएं:
- OAuth 2.0 कॉन्फ़िगरेशन विंडो खोलने के लिए, कॉन्फ़िगरेशन पर क्लिक करें.
- OAuth फ़्लो फ़ील्ड में, क्लाइंट-साइड चुनें.
- OAuth एंडपॉइंट फ़ील्ड में, कस्टम चुनें.
- अपने OAuth 2.0 एंडपॉइंट और Google को असाइन किया गया क्लाइंट आईडी, उससे जुड़े फ़ील्ड में डालें.
- पहला चरण सेक्शन में, कोई भी Google स्कोप न चुनें. इसके बजाय, इस फ़ील्ड को खाली छोड़ दें या अपने सर्वर के लिए मान्य स्कोप टाइप करें. अगर OAuth स्कोप का इस्तेमाल नहीं किया जाता है, तो कोई भी स्ट्रिंग टाइप करें. जब आपका काम पूरा हो जाए, तो एपीआई को अनुमति दें पर क्लिक करें.
- दूसरे चरण और तीसरे चरण सेक्शन में, OAuth 2.0 फ़्लो देखें. साथ ही, यह पुष्टि करें कि हर चरण उम्मीद के मुताबिक काम कर रहा है.
Google खाता लिंक करने की सुविधा का डेमो टूल का इस्तेमाल करके, लागू की गई सुविधा की पुष्टि की जा सकती है.
टूल में, यह तरीका अपनाएं:
- Google से साइन इन करें बटन पर क्लिक करें.
- वह खाता चुनें जिसे आपको लिंक करना है.
- सेवा आईडी डालें.
- विकल्प के तौर पर, एक या उससे ज़्यादा ऐसे स्कोप डालें जिनके लिए आपको ऐक्सेस का अनुरोध करना है.
- डेमो शुरू करें पर क्लिक करें.
- जब कहा जाए, तब पुष्टि करें कि आपके पास खाते को लिंक करने के अनुरोध को स्वीकार या अस्वीकार करने का विकल्प है.
- पुष्टि करें कि आपको अपने प्लैटफ़ॉर्म पर रीडायरेक्ट किया गया हो.