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

उपयोगकर्ता का अनुभव आपके प्लैटफ़ॉर्म या 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 के अनुरोध के मुताबिक, अनुरोध को फिर से भेजता है.

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

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

'सभी खातों की सुरक्षा' सुविधा RISC मानक को 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).