Bạn có thể bắt đầu huỷ liên kết từ nền tảng của mình hoặc Google. Việc hiển thị trạng thái liên kết nhất quán trên cả hai nền tảng sẽ mang lại trải nghiệm tốt nhất cho người dùng. Bạn không bắt buộc phải hỗ trợ điểm cuối thu hồi mã thông báo hoặc tính năng Bảo vệ nhiều tài khoản cho tính năng Liên kết Tài khoản Google.
Tài khoản có thể bị huỷ liên kết bởi bất kỳ yếu tố nào sau đây:
- Yêu cầu của người dùng từ
- chế độ cài đặt của một ứng dụng của Google hoặc Tài khoản Google
- Nền tảng của bạn
- Không gia hạn được mã làm mới đã hết hạn
- Các sự kiện khác do bạn hoặc Google khởi tạo. Ví dụ: tạm ngưng tài khoản do các dịch vụ phát hiện hành vi sai trái và mối đe doạ.
Người dùng đã yêu cầu huỷ liên kết khỏi Google
Thao tác huỷ liên kết tài khoản được bắt đầu thông qua Tài khoản Google hoặc ứng dụng của người dùng sẽ xoá mọi mã thông báo truy cập và làm mới đã cấp trước đó, xoá trạng thái đồng ý của người dùng và gọi điểm cuối thu hồi mã thông báo (không bắt buộc) nếu bạn chọn triển khai điểm cuối này.
Người dùng đã yêu cầu huỷ liên kết khỏi nền tảng của bạn
Bạn nên cung cấp một cơ chế để người dùng huỷ liên kết, chẳng hạn như một URL đến tài khoản của họ. Nếu bạn không cung cấp cách để người dùng huỷ liên kết, hãy thêm đường liên kết đến Tài khoản Google để người dùng có thể quản lý tài khoản được liên kết.
Bạn có thể chọn triển khai tính năng Chia sẻ và cộng tác về rủi ro và sự cố (RISC) và thông báo cho Google về những thay đổi đối với trạng thái liên kết tài khoản của người dùng. Điều này giúp cải thiện trải nghiệm người dùng, trong đó cả nền tảng của bạn và Google đều hiển thị trạng thái liên kết hiện tại và nhất quán mà không cần dựa vào yêu cầu làm mới hoặc mã thông báo truy cập để cập nhật trạng thái liên kết.
Thời hạn của mã thông báo
Để mang lại trải nghiệm mượt mà cho người dùng và tránh gián đoạn dịch vụ, Google sẽ cố gắng gia hạn mã thông báo làm mới khi sắp hết thời hạn. Trong một số trường hợp, có thể cần có sự đồng ý của người dùng để liên kết lại các tài khoản khi không có mã làm mới hợp lệ.
Việc thiết kế nền tảng để hỗ trợ nhiều mã truy cập và mã làm mới chưa hết hạn có thể giảm thiểu các điều kiện tranh đấu có trong hoạt động trao đổi máy khách-máy chủ giữa các môi trường được phân cụm, tránh làm gián đoạn người dùng, đồng thời giảm thiểu các tình huống xử lý lỗi và thời gian phức tạp. Mặc dù cuối cùng sẽ nhất quán, nhưng cả mã thông báo chưa hết hạn trước đó và mã thông báo mới phát hành có thể được sử dụng trong một khoảng thời gian ngắn trong quá trình trao đổi gia hạn mã thông báo máy khách-máy chủ và trước khi đồng bộ hoá cụm. Ví dụ: một yêu cầu của Google đối với dịch vụ của bạn mà sử dụng mã truy cập chưa hết hạn trước đó sẽ xảy ra ngay sau khi bạn cấp mã truy cập mới, nhưng trước khi quá trình nhận và đồng bộ hoá cụm diễn ra tại Google. Bạn nên sử dụng các biện pháp bảo mật thay thế cho tính năng Luân phiên mã thông báo làm mới.
Các sự kiện khác
Tài khoản có thể bị huỷ liên kết do nhiều lý do khác, chẳng hạn như không hoạt động, bị tạm ngưng, có hành vi độc hại, v.v. Trong những trường hợp như vậy, nền tảng của bạn và Google có thể quản lý tài khoản người dùng và liên kết lại một cách hiệu quả nhất bằng cách thông báo cho nhau về những thay đổi đối với tài khoản và trạng thái liên kết.
Triển khai điểm cuối thu hồi mã thông báo để Google gọi và thông báo cho Google về các sự kiện thu hồi mã thông báo bằng RISC để đảm bảo nền tảng của bạn và Google duy trì trạng thái liên kết tài khoản người dùng nhất quán.
Điểm cuối thu hồi mã thông báo
Nếu bạn hỗ trợ OAuth 2.0 điểm cuối thu hồi mã thông báo, nền tảng của bạn có thể nhận thông báo của Google. Điều này cho phép bạn thông báo cho người dùng về các thay đổi trạng thái liên kết, vô hiệu hoá mã thông báo và xoá thông tin xác thực bảo mật cũng như các quyền uỷ quyền.
Yêu cầu có biểu mẫu sau:
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
Điểm cuối thu hồi mã thông báo của bạn phải có khả năng xử lý các tham số sau:
| Thu hồi tham số điểm cuối | |
|---|---|
client_id |
Một chuỗi xác định nguồn gốc của yêu cầu là Google. Chuỗi này phải được đăng ký trong hệ thống của bạn làm giá trị nhận dạng duy nhất của Google. |
client_secret |
Chuỗi bí mật mà bạn đã đăng ký với Google cho dịch vụ của bạn. |
token |
Mã thông báo cần thu hồi. |
token_type_hint |
(Không bắt buộc) Loại mã thông báo đang bị thu hồi, access_token hoặc refresh_token. Nếu không được chỉ định, giá trị mặc định sẽ là access_token. |
Trả về phản hồi khi mã thông báo bị xoá hoặc không hợp lệ. Hãy xem các mục sau cho ví dụ:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
Nếu không thể xoá mã thông báo vì bất kỳ lý do gì, hãy trả về mã phản hồi 503, như trong ví dụ sau:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
Google sẽ thử lại yêu cầu này sau hoặc theo yêu cầu của Retry-After.
Tính năng Bảo vệ nhiều tài khoản (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)。