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

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

הקישור בין החשבונות יכול להתבטל בגלל אחת מהסיבות הבאות:

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

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

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

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

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

אתם יכולים להטמיע את התכונה 'שיתוף ותיאום של סיכונים ותקריות' (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

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

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

If you support Cross-Account Protection, your platform can notify Google when access or refresh tokens are revoked. This allows Google to inform users of link state changes, invalidate the token, cleanup security credentials, and authorization grants.

Cross-Account Protection is based on the RISC standard developed at the OpenID Foundation.

A Security Event Token is used to notify Google of token revocation.

When decoded, a token revocation event looks like the following example:

{
  "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"
    }
  }
}

Security Event Tokens that you use to notify Google of token revocation events must conform to the requirements in the following table:

Token revocation events
iss Issuer Claim: This is a URL which you host, and it's shared with Google during registration.
aud Audience Claim: This identifies Google as the JWT recipient. It must be set to google_account_linking.
jti JWT ID Claim: This is a unique ID that you generate for every security event token.
iat Issued At Claim: This is a NumericDate value that represents the time when this security event token was created.
toe Time of Event Claim: This is an optional NumericDate value that represents the time at which the token was revoked.
exp Expiration Time Claim: Do not include this field, as the event resulting in this notification has already taken place.
events
Security Events Claim: This is a JSON object, and must include only a single token revocation event.
subject_type This must be set to oauth_token.
token_type This is the type of token being revoked, either access_token or refresh_token.
token_identifier_alg This is the algorithm used to encode the token, and it must be hash_SHA512_double.
token This is the ID of the revoked token.

For more information on field types and formats, see JSON Web Token (JWT).