יכול להיות שהניתוק יתבצע מהפלטפורמה או מ-Google, והצגת מצב קישור עקבי בשני המקומות תספק את חוויית המשתמש הטובה ביותר. תמיכה בנקודת קצה לביטול טוקן או בהגנה על כל החשבונות היא אופציונלית לקישור חשבונות Google.
הקישור בין החשבונות יכול להתבטל בגלל אחת מהסיבות הבאות:
- בקשת משתמש מאת
- אפליקציה של Google או הגדרות של חשבון Google
- הפלטפורמה שלכם
- חידוש של אסימון רענון שפג תוקפו נכשל
- אירועים אחרים שאתם או Google יזמתם. לדוגמה, השעיה של חשבון על ידי שירותים לזיהוי התנהלות פוגעת ואיומים.
המשתמש ביקש לבטל את הקישור ל-Google
ביטול הקישור לחשבון שמתבצע דרך חשבון Google של המשתמש או דרך האפליקציה מוחק את כל אסימוני הגישה והרענון שהונפקו בעבר, מסיר את הסכמת המשתמש ובאופן אופציונלי קורא לנקודת הקצה של ביטול האסימון אם בחרתם להטמיע אותה.
המשתמש ביקש לבטל את הקישור לפלטפורמה שלך
מומלץ לספק למשתמשים מנגנון לביטול הקישור, כמו כתובת URL לחשבון שלהם. אם אתם לא מציעים למשתמשים דרך לנתק את הקישור, אתם צריכים לכלול קישור לחשבון Google כדי שהמשתמשים יוכלו לנהל את החשבון המקושר שלהם.
אתם יכולים להטמיע את התכונה 'שיתוף ותיאום של סיכונים ותקריות' (RISC) ולעדכן את Google לגבי שינויים בסטטוס הקישור של חשבון המשתמש. כך אפשר לשפר את חוויית המשתמש, כי גם הפלטפורמה שלכם וגם Google מציגות סטטוס קישור עדכני ועקבי בלי להסתמך על רענון או על בקשה של אסימון גישה כדי לעדכן את סטטוס הקישור.
תוקף הטוקן
כדי לספק חוויית משתמש חלקה ולמנוע שיבושים בשירות, Google מנסה לחדש את טוקני הרענון לקראת סוף תקופת התוקף שלהם. במקרים מסוימים, יכול להיות שתידרש הסכמה מהמשתמש כדי לקשר מחדש חשבונות כשאין אסימון רענון תקף.
תכנון הפלטפורמה כך שתתמוך בכמה אסימוני גישה ורענון שלא פג תוקפם יכול לצמצם את התנאים התחרותיים שקיימים בחילופי נתונים בין לקוח לשרת בסביבות מקובצות, למנוע שיבושים אצל המשתמשים ולצמצם תרחישים מורכבים של תזמון וטיפול בשגיאות. למרות שהם עקביים בסופו של דבר, יכול להיות שגם טוקנים קודמים וגם טוקנים חדשים שתוקפם לא פג יהיו בשימוש למשך תקופה קצרה במהלך החלפת הטוקנים בין הלקוח לשרת ולפני הסנכרון של האשכול. לדוגמה, בקשה של Google לשירות שלכם שמשתמשת באסימון הגישה הקודם שלא פג תוקפו מתרחשת מיד אחרי שאתם מנפיקים אסימון גישה חדש, אבל לפני שמתבצעת קבלה וסנכרון של האשכול ב-Google. מומלץ להשתמש באמצעי אבטחה חלופיים במקום רענון מחזורי של אסימוני גישה.
אירועים אחרים
יכולות להיות סיבות שונות לביטול הקישור של חשבונות, כמו חוסר פעילות, השעיה, התנהגות זדונית וכו'. במקרים כאלה, הפלטפורמה ו-Google יכולות לנהל בצורה הטובה ביותר את חשבונות המשתמשים ולקשר מחדש את החשבונות על ידי שליחת הודעות אחת לשנייה על שינויים במצב החשבון והקישור.
צריך להטמיע נקודת קצה לביטול טוקנים ש-Google יכולה לשלוח אליה קריאה, ולהודיע ל-Google על אירועי ביטול הטוקנים באמצעות RISC כדי לוודא שהפלטפורמה ו-Google ישמרו על מצב עקבי של קישור חשבון המשתמש.
נקודת הקצה לביטול הטוקן
If you support an OAuth 2.0 token revocation endpoint, your platform can receive notifications from Google. This lets you inform users of link state changes, invalidate a token, and cleanup security credentials and authorization grants.
The request has the following form:
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
Your token revocation endpoint must be able to handle the following parameters:
| Revocation endpoint parameters | |
|---|---|
client_id |
A string that identifies the request origin as Google. This string must be registered within your system as Google's unique identifier. |
client_secret |
A secret string that you registered with Google for your service. |
token |
The token to be revoked. |
token_type_hint |
(Optional) The type of token being revoked, either an
access_token or refresh_token. If unspecified,
defaults to access_token. |
Return a response when the token is deleted or invalid. See the following for an example:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
If the token can't be deleted for any reason, return a 503 response code, as shown in the following example:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
Google retries the request later or as requested by 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 |
|
||||||||||
For more information on field types and formats, see JSON Web Token (JWT).