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

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

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.

Tính năng 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, nền tảng của bạn có thể thông báo cho Google khi mã truy cập hoặc mã làm mới đều bị thu hồi. Điều này cho phép Google thông báo cho người dùng về thay đổi trạng thái liên kết, vô hiệu hoá mã thông báo, dọn dẹp thông tin xác thực bảo mật, và 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 Nền tảng ID Mở.

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 nhà phát hành: Đây là URL mà bạn lưu trữ và được chia sẻ với Google trong quá trình đăng ký.
aud Thông báo 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. Nó phải được đặt thành google_account_linking.
jti Thông báo 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 của bạn.
iat Được phát hành khi khiếu nại: Đây là giá trị NumericDate thể hiện thời điểm mã thông báo sự kiện bảo mật này được tạo.
toe Thời gian xác nhận quyền sở hữu sự kiện: Đây là thời gian không bắt buộc Giá trị NumericDate biểu thị 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 bao gồm trường này, vì sự kiện dẫn đến thông báo này đã diễn ra.
events
Thông báo xác nhận quyền sở hữu sự kiện bảo mật: Đây là một đối tượng JSON và chỉ được bao gồm một sự kiện thu hồi mã thông báo.
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 bị thu hồi, có thể là 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à thuật toán này phải hash_SHA512_double.
token Đây là mã 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 trường và định dạng trường, hãy xem Mã thông báo web JSON (JWT).