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

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

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

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

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

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

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

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

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

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

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

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

अन्य इवेंट

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

Google, टोकन रद्द करने का एंडपॉइंट लागू करें, ताकि Google उसे कॉल कर सके. साथ ही, RISC का इस्तेमाल करके, 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).