Hủy liên kết các tài khoản

Bạn có thể bắt đầu hủy liên kết từ nền tảng hoặc Google và việc hiển thị trạng thái liên kết nhất quán trên cả hai đều mang lại trải nghiệm người dùng tốt nhất. 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 Bảo vệ nhiều tài khoản để Liên kết tài khoản Google.

Bất kỳ tài khoản nào sau đây đều có thể hủy liên kết:

  • Yêu cầu của người dùng từ
    • một ứng dụng Google hoặc phần cài đặt Tài khoản Google
    • Nền tảng của bạn
  • Không thể gia hạn mã làm mới đã hết hạn
  • Các sự kiện khác do bạn hoặc Google khởi xướng. Ví dụ: tạm ngưng tài khoản do dịch vụ lạm dụng và phát hiện mối đe dọa.

Người dùng đã yêu cầu hủy liên kết khỏi Google

Việc huỷ liên kết tài khoản được thực hiện thông qua một Tài khoản Google hoặc ứng dụng của người dùng sẽ xoá mọi mã truy cập và mã làm mới đã cấp trước đó, xoá sự đồng ý của người dùng và gọi tuỳ chọn điểm cuối thu hồi mã thông báo nếu bạn chọn triển khai một mã.

Người dùng đã yêu cầu hủy 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ư URL đến tài khoản của họ. Nếu bạn không cung cấp cho người dùng cách để hủy liên kết, hãy cung cấp đườ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 Rủi ro và amp; Chia sẻ sự cố và Cộng tá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 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.

Mã thông báo hết hạn

Để cung cấp trải nghiệm suôn sẻ cho người dùng và tránh bị gián đoạn dịch vụ, Google sẽ cố gắng gia hạn mã làm mới gần hết thời gian hoạt động. Trong một số trường hợp, có thể bạn phải đồ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 chưa hết hạn và làm mới mã thông báo có thể làm giảm thiểu các tình huống tương tranh có trong giao dịch máy chủ giữa các máy khách giữa các môi trường được phân nhóm, tránh việc gián đoạn người dùng và giảm thiểu các trường hợp xử lý lỗi và thời gian phức tạp. Mặc dù cuối cùng, cả mã thông báo chưa hết hạn trước đây và mới được 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 chủ – máy khách và trước khi đồng bộ hoá cụm. Ví dụ: một yêu cầu của Google đến dịch vụ của bạn có 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 Google nhận được và đồng bộ hoá cụm từ. Bạn nên sử dụng các biện pháp bảo mật thay thế để Làm mới mã xoay vòng mã thông báo.

Các sự kiện khác

Tài khoản có thể bị huỷ liên kết vì nhiều lý do khác, chẳng hạn như không hoạt động, bị tạm ngưng, 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ốt nhất tài khoản người dùng và liên kết lại bằng cách thông báo cho nhau về các 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 của bạn bằng RISC để đảm bảo nền tảng của bạn và Google duy trì trạng thái nhất quán của đường liên kết đến tài khoản người dùng.

Điểm cuối thu hồi mã thông báo

Nếu bạn hỗ trợ điểm cuối thu hồi mã thông báo OAuth 2.0, nền tảng của bạn có thể nhận được thông báo từ 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, làm mất hiệu lực mã thông báo cũng như dọn dẹp thông tin xác thực bảo mật và cấp ủy quyền.

Yêu cầu có dạng 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 thông số sau:

Thông số điểm cuối thu hồi
client_id Một chuỗi xác định nguồn gốc yêu cầu là Google. Chuỗi này phải được đăng ký trong hệ thống của bạn dưới dạng mã nhận dạng duy nhất của Google.
client_secret Một chuỗi bí mật mà bạn đã đăng ký với Google cho dịch vụ của mình.
token Mã thông báo sẽ bị thu hồi.
token_type_hint (Tùy chọn) Loại mã thông báo bị thu hồi, access_token hoặc refresh_token . Nếu không được chỉ định, mặc định là access_token .

Trả lại phản hồi khi mã thông báo bị xóa hoặc không hợp lệ. Xem ví dụ sau:

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

Nếu không thể xóa mã thông báo vì bất kỳ lý do gì, hãy trả lại mã phản hồi 503, như được hiển thị trong ví dụ sau:

HTTP/1.1 503 Service Unavailable
Content-Type: application/json;charset=UTF-8
Retry-After: HTTP-date / delay-seconds

Google thử lại yêu cầu sau hoặc theo yêu cầu của Retry-After .

Bảo vệ nhiều tài khoản (RISC)

Nếu bạn hỗ trợ tính năng Bảo vệ nhiều tài khoản, thì nền tảng của bạn có thể thông báo cho Google khi quyền truy cập hoặc mã làm mới bị thu hồi. Việc này cho phép Google 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, xoá thông tin xác thực bảo mật và cấp quyền uỷ quyền.

Tính năng Bảo vệ nhiều tài khoản dựa trên tiêu chuẩn RISC được phát triển tại OpenID Foundation.

Mã thông báo sự kiện bảo mật được dùng để thông báo cho Google về việc thu hồi mã thông báo.

Khi được giải mã, sự kiện thu hồi mã thông báo sẽ có dạng như ví dụ sau:

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

Mã thông báo sự kiện bảo mật mà bạn dùng để thông báo cho Google về các sự kiện thu hồi mã thông báo phải tuân thủ các yêu cầu trong bảng sau:

Sự kiện thu hồi mã thông báo
iss Xác nhận quyền sở hữu của công ty phát hành: Đây là URL do bạn lưu trữ và được chia sẻ với Google trong quá trình đăng ký.
aud Xác nhận quyền sở hữu đối tượng: Thông tin này xác định Google là người nhận JWT. Thuộc tính này phải được đặt thành google_account_linking.
jti Xác nhận quyền sở hữu mã JWT: Đây là mã nhận dạng duy nhất mà bạn tạo cho mỗi mã thông báo sự kiện bảo mật.
iat Được phát hành tại thời điểm xác nhận quyền sở hữu: Đây là một giá trị NumericDate thể hiện thời điểm tạo mã thông báo sự kiện bảo mật này.
toe Thời gian xác nhận quyền sở hữu sự kiện: Đây là giá trị NumericDate không bắt buộc, thể hiện thời điểm mã thông báo bị thu hồi.
exp Thông báo xác nhận quyền sở hữu theo thời gian hết hạn: Không điền vào trường này, vì sự kiện dẫn đến thông báo này đã diễn ra.
events
Tuyên bố về sự kiện bảo mật: Đây là đối tượng JSON và chỉ được bao gồm một sự kiện thu hồi mã thông báo duy nhất.
subject_type Giá trị này phải được đặt thành oauth_token.
token_type Đây là loại mã thông báo đang bị thu hồi, access_token hoặc refresh_token.
token_identifier_alg Đây là thuật toán dùng để mã hoá mã thông báo và phải là hash_SHA512_double.
token Đây là giá trị nhận dạng của mã thông báo bị thu hồi.

Để biết thêm thông tin về các loại và định dạng trường, hãy xem Mã thông báo web JSON (JWT).