您可以從您的平台或 Google 啟動取消連結程序,並讓兩者的連結狀態一致,以便提供最佳使用者體驗。您可以選擇支援 Google 帳戶連結的權杖撤銷端點或跨帳戶防護功能。
帳戶遭到下列任一操作取消連結:
- 來自
- Google 應用程式或 Google 帳戶設定
- 你的平台
- 無法續購過期的更新權杖
- 由您或 Google 啟動的其他事件。例如濫用行為和威脅偵測服務導致帳戶遭到停權。
使用者要求取消與 Google 的連結
透過使用者的 Google 帳戶或應用程式啟動的帳戶取消連結作業會刪除先前核發的存取權和重新整理權杖,並移除使用者同意聲明,如果您選擇實作權杖撤銷端點,系統會視需要呼叫該端點。
使用者要求取消連結平台
您應提供使用者解除連結的機制,例如帳戶網址。如果您沒有提供使用者取消連結的方式,請附上 Google 帳戶的連結,方便使用者管理已連結的帳戶。
您可以選擇實施風險與事件分享和合作 (RISC),並通知 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
的请求重试请求。
跨帳戶防護 (RISC)
如果您支持跨账号保护功能,您的平台可以在以下情况下通知 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 |
Issuer Claim:这是由您托管的网址,并且会分享给 在注册过程中与 Google 联系。 | ||||||||||
aud |
受众群体声明:这可将 Google 标识为 JWT 收件人。它
必须设置为 google_account_linking 。 |
||||||||||
jti |
JWT ID 声明:这是您为每次 JWT 生成的唯一 ID 安全事件令牌 | ||||||||||
iat |
Issued At Claim:这是一个 NumericDate 值
表示创建此安全性事件令牌的时间。 |
||||||||||
toe |
事件声明时间:此为可选
NumericDate 值,该值表示
已撤消。 |
||||||||||
exp |
到期时间声明:请勿包含此字段。 因为导致此通知的事件已经发生。 | ||||||||||
events |
|
如需详细了解字段类型和格式,请参阅 JSON 网络令牌 (JWT)。