لغو پیوند میتواند از پلتفرم شما یا گوگل آغاز شود و نمایش وضعیت پیوند ثابت در هر دو، بهترین تجربه کاربری را فراهم میکند. پشتیبانی از نقطه پایانی ابطال توکن یا محافظت متقابل حساب برای پیوند حساب گوگل اختیاری است.
حسابها میتوانند به دلایل زیر از هم جدا شوند:
- درخواست کاربر از
- یک برنامه گوگل یا تنظیمات حساب گوگل
- پلتفرم شما
- عدم تمدید توکن بهروزرسانی منقضیشده
- سایر رویدادهایی که توسط شما یا گوگل آغاز شدهاند. به عنوان مثال، تعلیق حساب توسط سرویسهای تشخیص سوءاستفاده و تهدید.
کاربر درخواست لغو لینک از گوگل را داد
لغو اتصال حساب که از طریق حساب گوگل یا برنامه کاربر آغاز میشود، هرگونه توکن دسترسی و بهروزرسانی که قبلاً صادر شده است را حذف میکند، رضایت کاربر را حذف میکند و در صورت تمایل، در صورت تمایل، نقطه پایانی لغو توکن شما را فراخوانی میکند.
کاربر درخواست لغو لینک از پلتفرم شما را داده است
شما باید مکانیزمی برای لغو پیوند کاربران فراهم کنید، مانند یک URL به حساب کاربریشان. اگر راهی برای لغو پیوند کاربران ارائه نمیدهید، پیوندی به حساب گوگل قرار دهید تا کاربران بتوانند حساب پیوند شده خود را مدیریت کنند.
شما میتوانید از قابلیت به اشتراکگذاری و همکاری در برابر ریسک و حادثه (RISC) استفاده کنید و گوگل را از تغییرات وضعیت لینک حساب کاربری مطلع کنید. این کار باعث بهبود تجربه کاربری میشود، به طوری که هم پلتفرم شما و هم گوگل، وضعیت لینک فعلی و ثابتی را بدون نیاز به تکیه بر بهروزرسانی یا درخواست توکن دسترسی برای بهروزرسانی وضعیت لینک، نشان میدهند.
انقضای توکن
برای ارائه یک تجربه کاربری روان و جلوگیری از اختلال در سرویس، گوگل تلاش میکند تا توکنهای بهروزرسانی را در نزدیکی پایان عمرشان تمدید کند. در برخی موارد، ممکن است رضایت کاربر برای اتصال مجدد حسابها در صورت عدم دسترسی به توکن بهروزرسانی معتبر، لازم باشد.
طراحی پلتفرم شما برای پشتیبانی از چندین توکن دسترسی و بهروزرسانی منقضی نشده میتواند شرایط رقابتی موجود در تبادلات کلاینت-سرور بین محیطهای خوشهای را به حداقل برساند، از اختلال کاربر جلوگیری کند و سناریوهای پیچیده زمانبندی و مدیریت خطا را به حداقل برساند. در حالی که در نهایت سازگار هستند، توکنهای منقضی نشده قبلی و جدید صادر شده ممکن است برای مدت کوتاهی در طول تبادل تمدید توکن کلاینت-سرور و قبل از همگامسازی خوشهای مورد استفاده قرار گیرند. به عنوان مثال، یک درخواست گوگل به سرویس شما که از توکن دسترسی منقضی نشده قبلی استفاده میکند، درست پس از صدور یک توکن دسترسی جدید توسط شما، اما قبل از دریافت و همگامسازی خوشهای در گوگل، رخ میدهد. اقدامات امنیتی جایگزین برای چرخش توکن بهروزرسانی توصیه میشود.
رویدادهای دیگر
حسابها میتوانند به دلایل مختلف دیگری مانند عدم فعالیت، تعلیق، رفتار مخرب و غیره از هم جدا شوند. در چنین سناریوهایی، پلتفرم شما و گوگل میتوانند با اطلاعرسانی به یکدیگر در مورد تغییرات در حساب و وضعیت پیوند، به بهترین شکل حسابهای کاربری را مدیریت کرده و دوباره به هم متصل شوند.
یک نقطه پایانی ابطال توکن برای فراخوانی توسط گوگل پیادهسازی کنید و با استفاده از RISC، رویدادهای ابطال توکن خود را به گوگل اطلاع دهید تا از حفظ وضعیت پیوند حساب کاربری سازگار بین پلتفرم و گوگل اطمینان حاصل شود.
نقطه پایانی ابطال توکن
اگر از نقطه پایانی ابطال توکن OAuth 2.0 پشتیبانی میکنید، پلتفرم شما میتواند از گوگل اعلان دریافت کند. این به شما امکان میدهد تا کاربران را از تغییرات وضعیت لینک مطلع کنید، یک توکن را نامعتبر کنید و اعتبارنامههای امنیتی و مجوزهای اعطا شده را پاکسازی کنید.
درخواست دارای فرم زیر است:
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 | رشتهای که مبدا درخواست را گوگل معرفی میکند. این رشته باید در سیستم شما به عنوان شناسه منحصر به فرد گوگل ثبت شود. |
client_secret | یک رشته مخفی که شما برای سرویس خود در گوگل ثبت کردهاید. |
token | توکنی که قرار است باطل شود. |
token_type_hint | (اختیاری) نوع توکنی که لغو میشود، که میتواند access_token یا refresh_token باشد. اگر مشخص نشود، پیشفرض access_token است. |
وقتی توکن حذف یا نامعتبر است، پاسخی را برمیگرداند. برای مثال به مثال زیر توجه کنید:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
اگر به هر دلیلی امکان حذف توکن وجود نداشت، کد پاسخ ۵۰۳ را مطابق مثال زیر برگردانید:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
گوگل درخواست را بعداً یا طبق درخواست Retry-After دوباره امتحان میکند.
محافظت از حسابهای کاربری متقابل (RISC)
اگر از «محافظت بین حسابها» پشتیبانی میکنید، پلتفرم شما میتواند هنگام لغو دسترسی یا بهروزرسانی نشانهها، Google را مطلع کند. این به Google اجازه میدهد تا کاربران را از تغییرات وضعیت پیوند مطلع کند، رمز را باطل کند، اعتبارنامههای امنیتی پاکسازی و مجوزهای اعطایی را دریافت کند.
حفاظت از حساب های متقابل بر اساس استاندارد RISC توسعه یافته در بنیاد OpenID است.
یک نشانه رویداد امنیتی برای اطلاع رسانی به گوگل از لغو توکن استفاده می شود.
هنگام رمزگشایی، یک رویداد ابطال نشانه مانند مثال زیر است:
{
"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 ID: این یک شناسه منحصر به فرد است که شما برای هر نشانه رویداد امنیتی ایجاد می کنید. | ||||||||||
iat | Issued At Claim: این یک مقدار NumericDate است که نشان دهنده زمان ایجاد این نشانه رویداد امنیتی است. | ||||||||||
toe | زمان ادعای رویداد: این یک مقدار NumericDate اختیاری است که نشاندهنده زمانی است که توکن باطل شده است. | ||||||||||
exp | ادعای زمان انقضا: این قسمت را وارد نکنید ، زیرا رویدادی که منجر به این اعلان شده است قبلاً اتفاق افتاده است. | ||||||||||
events |
| ||||||||||
برای اطلاعات بیشتر در مورد انواع و قالبهای فیلد، JSON Web Token (JWT) را ببینید.