खातों को अलग करना (अनलिंक करना)

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

खाते को इनमें से किसी भी खाते से अलग किया जा सकता है:

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

उपयोगकर्ता ने Google से अनलिंक करने का अनुरोध किया है

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

उपयोगकर्ता ने आपके प्लैटफ़ॉर्म से अलग करने का अनुरोध किया है

आपको उपयोगकर्ताओं को अनलिंक करने का एक तरीका उपलब्ध कराना चाहिए, जैसे उनके खाते का यूआरएल. अगर आप उपयोगकर्ताओं को अनलिंक करने का तरीका नहीं बताते हैं, तो Google खाते का लिंक शामिल करें, ताकि उपयोगकर्ता अपना लिंक किया गया खाता प्रबंधित कर सकें.

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

टोकन की समयसीमा खत्म

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

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

अन्य इवेंट

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

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

टोकन निरस्त करने का एंडपॉइंट

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

अनुरोध के निम्नलिखित रूप हैं:

POST /revoke HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token

आपका टोकन निरस्तीकरण समापन बिंदु निम्नलिखित मापदंडों को संभालने में सक्षम होना चाहिए:

निरसन समापन बिंदु पैरामीटर
client_id एक स्ट्रिंग जो Google के रूप में अनुरोध मूल की पहचान करती है। यह स्ट्रिंग Google के विशिष्ट पहचानकर्ता के रूप में आपके सिस्टम में पंजीकृत होनी चाहिए।
client_secret एक गुप्त स्ट्रिंग जो आपने अपनी सेवा के लिए Google के साथ पंजीकृत की थी।
token टोकन निरस्त किया जाना है।
token_type_hint (वैकल्पिक) टोकन का प्रकार निरस्त किया जा रहा है, या तो एक access_token या refresh_token । यदि अनिर्दिष्ट है, तो access_token चूक।

टोकन हटाए जाने या अमान्य होने पर प्रतिक्रिया लौटाएं। एक उदाहरण के लिए निम्नलिखित देखें:

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

यदि किसी भी कारण से टोकन हटाया नहीं जा सकता है, तो 503 प्रतिक्रिया कोड लौटाएं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

HTTP/1.1 503 Service Unavailable
Content-Type: application/json;charset=UTF-8
Retry-After: HTTP-date / delay-seconds

Google अनुरोध को बाद में या Retry-After से Retry-After

कई खातों की सुरक्षा (आरआईएससी)

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

'सभी खातों की सुरक्षा' सुविधा, OpenID Foundation के बनाए गए आरआईएससी मानक पर आधारित है.

सुरक्षा इवेंट टोकन का इस्तेमाल Google को टोकन रद्द होने की सूचना देने के लिए किया जाता है.

डिकोड किए जाने पर, टोकन रद्द करने का इवेंट नीचे दिए गए उदाहरण की तरह दिखता है:

{
  "iss":"http://risc.example.com",
  "iat":1521068887,
  "aud":"google_account_linking",
  "jti":"101942095",
  "toe": "1508184602",
  "events": {
    "https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
      "subject_type": "oauth_token",
      "token_type": "refresh_token",
      "token_identifier_alg": "hash_SHA512_double",
      "token": "double SHA-512 hash value of token"
    }
  }
}

Google को टोकन रद्द करने के इवेंट की सूचना देने के लिए इस्तेमाल किए जाने वाले सिक्योरिटी इवेंट टोकन, नीचे दी गई टेबल की शर्तों के मुताबिक होने चाहिए:

टोकन रद्द करने के इवेंट
iss दावेदार का दावा: यह ऐसा यूआरएल है जिसे होस्ट किया जाता है. इसे रजिस्ट्रेशन के दौरान, Google के साथ शेयर किया जाता है.
aud ऑडियंस दावा: इससे Google को JWT पाने वाले के तौर पर पहचाना जाता है. इसे google_account_linking पर सेट करना ज़रूरी है.
jti JWT आईडी दावा: यह एक यूनीक आईडी है, जिसे सुरक्षा से जुड़े हर इवेंट टोकन के लिए जनरेट किया जाता है.
iat दावे के दौरान जारी किया गया: यह NumericDate की वैल्यू होती है. इससे पता चलता है कि इस सुरक्षा से जुड़ी गतिविधि का टोकन कब बनाया गया था.
toe इवेंट के दावे का समय: यह एक ज़रूरी नहीं NumericDate वैल्यू है, जो उस समय के बारे में बताती है जब टोकन रद्द किया गया था.
exp खत्म होने के समय का दावा: इस फ़ील्ड को शामिल करें, क्योंकि इस सूचना में जो इवेंट हो रहा है वह पहले ही हो चुका है.
events
सुरक्षा से जुड़ी गतिविधियों का दावा: यह एक JSON ऑब्जेक्ट है और इसमें सिर्फ़ एक टोकन रद्द करने का इवेंट शामिल होना चाहिए.
subject_type इसे oauth_token पर सेट करना ज़रूरी है.
token_type इस तरह का टोकन निरस्त किया जा रहा है, access_token या refresh_token.
token_identifier_alg इस एल्गोरिदम का इस्तेमाल, टोकन को कोड में बदलने के लिए किया जाता है. यह टोकन, hash_SHA512_double फ़ॉर्मैट में होना चाहिए.
token यह वापस लिए गए टोकन का आईडी है.

फ़ील्ड टाइप और फ़ॉर्मैट के बारे में ज़्यादा जानकारी के लिए, JSON वेब टोकन (JWT) देखें.