ביטול קישור של חשבונות

ניתן לבטל את הקישור מהפלטפורמה או מ-Google, והצגה של מצב קישור עקבי בשני הפלטפורמות מספקת את חוויית המשתמש הטובה ביותר. אין תמיכה בקישור בין נקודות קצה לביטול אסימונים או בהגנה על חשבונות שונים.

אפשר לבטל את קישור החשבונות באמצעות אחת מהאפשרויות הבאות:

  • בקשת משתמש מאת
    • אפליקציית Google או הגדרות של חשבון Google
    • הפלטפורמה שלך
  • לא ניתן לחדש אסימון רענון שפג תוקפו
  • אירועים אחרים שאתם או Google יזמתם. לדוגמה, השעיית חשבון באמצעות שירותי זיהוי של התנהלות פוגעת ואיומים.

המשתמש ביקש לבטל את הקישור ל-Google

ביטול הקישור של חשבון שהתבצע דרך חשבון Google או האפליקציה של המשתמש מוחק את כל אסימוני הגישה והרענון שהונפקו בעבר, מסיר את הסכמת המשתמשים ואופציונלי, מפעיל את נקודת הקצה לביטול האסימון אם בחרתם להטמיע אסימון כזה.

המשתמש ביקש לבטל את הקישור לפלטפורמה שלך

עליכם לספק למשתמשים מנגנון לביטול קישור, כמו כתובת URL לחשבון שלהם. אם לא מציעים למשתמשים אפשרות לבטל את הקישור, יש לכלול קישור אל חשבון Google כדי שהמשתמשים יוכלו לנהל את החשבון המקושר.

תוכלו לבחור להטמיע Risk & שיתוף פעולה באירוע ושיתוף (RISC) וליידע את Google על שינויים בסטטוס הקישור של חשבון המשתמש. כך אפשר לשפר את חוויית המשתמש – גם בפלטפורמה וגם ב-Google מוצג סטטוס קישור נוכחי ועקבי, ללא צורך להסתמך על בקשה לרענון או לאסימון גישה לעדכון מצב הקישור.

תוקף האסימון

כדי לספק חוויית משתמש חלקה ולמנוע שיבושים בשירות, Google מנסה לחדש את אסימוני הרענון לקראת סוף החיים שלהם. בחלק מהתרחישים ייתכן שיהיה צורך בהסכמת משתמש כדי לקשר מחדש את החשבונות כאשר אסימון רענון תקין לא זמין.

כשמתכננים את הפלטפורמה כך שתומכת באסימונים רבים לגישה ולרענון ללא הפרעה, אפשר למזער את תנאי המרוץ שיוצגו בחילופי הודעות של לקוחות בין סביבות של אשכולות, להימנע משיבושים למשתמשים ולצמצם תרחישים מורכבים של תזמון וטיפול בשגיאות. בסופו של דבר, למרות שהאסימונים הקודמים שפג תוקפם וגם אלה שהתוקף שלהם פג לפני פרק זמן קצר, הם עשויים להיות בתוקף לפרק זמן קצר במהלך חילופי החידושים של אסימוני שרת הלקוח ולפני סנכרון האשכולות. לדוגמה, בקשת שירות מ-Google שמשתמשת באסימון הגישה הקודם, שתוקפו פג, מתרחשת מיד לאחר הנפקת אסימון גישה חדש, אבל לפני שמתבצע סנכרון של קבלות ואשכולות ב-Google. מומלץ להשתמש באמצעי אבטחה חלופיים לרענון סבב אסימון.

אירועים אחרים

ניתן לבטל קישור של חשבונות מסיבות שונות, כגון חוסר פעילות, השעיה, התנהגות זדונית וכו'. בתרחישים כאלה, הפלטפורמה ו-Google שלכם יוכלו לנהל בצורה הטובה ביותר את חשבונות המשתמשים ולקשר אותם מחדש, על ידי שליחת התראות אחד לשני לגבי שינויים במצב החשבון והקישור.

תוכלו להטמיע נקודת קצה לביטול אסימונים כדי ש-Google תתקשר אליהם, ולהודיע ל-Google על אירועי ביטול האסימון באמצעות RISC כדי להבטיח שהפלטפורמה ו-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

נקודת הקצה (endpoint) של ביטול האסימון צריכה להיות מסוגלת לטפל בפרמטרים הבאים:

ביטול פרמטרים של נקודת קצה
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.

הגנה על כל החשבונות (RISC)

אם יש תמיכה בהגנה על כל החשבונות, הפלטפורמה יכולה להודיע ל-Google אסימוני גישה או רענון מבוטלים. המצב הזה מאפשר ל-Google להודיע למשתמשים על שינויים במצב הקישור, ביטול התוקף של האסימון, ניקוי פרטי כניסה מאובטחים להעניק הרשאה.

ההגנה על כל החשבונות מבוססת על תקן RISC שפיתחנו בסיס OpenID.

אסימון של אירוע אבטחה משמש כדי להודיע ל-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 תלונה על ידי המנפיק: זו כתובת ה-URL שאתם מארחים, והיא משותפת איתה 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 Web Token (JWT).