Hướng dẫn cho nhà phát triển Mã thông báo trạng thái riêng tư

Trước đây, cookie của bên thứ ba được dùng để lưu trữ và truyền thông tin về trạng thái của người dùng, chẳng hạn như trạng thái đăng nhập, thông tin về thiết bị mà họ đang sử dụng hoặc liệu họ có xác định và đáng tin cậy hay không. Ví dụ: liệu người dùng đã đăng nhập bằng SSO hay chưa, liệu người dùng có một loại thiết bị tương thích nhất định hay không, hoặc liệu người dùng có xác định và đáng tin cậy hay không. Khi việc hỗ trợ cookie của bên thứ ba không được dùng nữa, nhiều trường hợp sử dụng trong số này sẽ cần được hỗ trợ bằng các phương thức khác.

Mã thông báo trạng thái riêng tư là một cách để chia sẻ thông tin trên web, nhưng theo cách bảo đảm quyền riêng tư thông qua các chế độ kiểm soát lượng dữ liệu thực sự có thể chia sẻ.

Mã thông báo trạng thái riêng tư (trước đây gọi là Mã thông báo tin cậy) giúp truyền tải niềm tin vào tính xác thực của người dùng từ ngữ cảnh này sang ngữ cảnh khác, đồng thời giúp các trang web chống gian lận và phân biệt bot với người thật mà không cần theo dõi thụ động.

Tài liệu này trình bày các thông tin kỹ thuật để triển khai Mã thông báo trạng thái riêng tư (PST). Để có đường viền cấp cao hơn, hãy xem bài viết Tổng quan về PST.

Quy trình học tập dành cho PST.
Quy trình tìm hiểu về PST: Quy trình này bao gồm nhiều bước, bắt đầu từ việc tìm hiểu về API và xác định chiến lược mã thông báo của riêng bạn (các hoạt động liên quan đến sản phẩm hoặc kinh doanh khác). Sau đó, giai đoạn kỹ thuật là triển khai bản minh hoạ trong môi trường cục bộ và áp dụng vào trường hợp sử dụng thực tế.

Mã thông báo trạng thái riêng tư hoạt động như thế nào?

Trong Giờ chuẩn Thái Bình Dương (PST), mối quan hệ chính là mối quan hệ giữa nhà phát hành và người sử dụng ưu đãi. Nhà phát hành và người sử dụng ưu đãi có thể thuộc cùng một công ty.

  • Trình phát hành – Những thực thể này có một số tín hiệu về người dùng (ví dụ: người dùng đó có phải là bot hay không) và nhúng tín hiệu đó vào một mã thông báo được lưu trữ trên thiết bị của người dùng (xem thêm thông tin chi tiết trong phần tiếp theo).
  • Người sử dụng mã – Những thực thể này có thể không có tín hiệu về người dùng nhưng cần biết điều gì đó về người dùng (ví dụ: liệu người dùng đó có phải là bot hay không) và yêu cầu sử dụng mã thông báo của nhà phát hành để hiểu về độ tin cậy của người dùng đó.

Mọi hoạt động tương tác PST đều yêu cầu nhà phát hành và người sử dụng ưu đãi phải làm việc cùng nhau để chia sẻ các tín hiệu trên web. Các tín hiệu đó là các giá trị thô không đủ chi tiết để xác định các cá nhân.

Mã thông báo trạng thái riêng tư có phù hợp với tôi không?

Các trường hợp sử dụng Mã thông báo trạng thái riêng tư.

Những công ty đang đưa ra quyết định về độ tin cậy và muốn thông tin đó được cung cấp tuỳ theo bối cảnh có thể hưởng lợi từ PST. Để biết thêm thông tin về các trường hợp có thể sử dụng PST, hãy xem tài liệu của chúng tôi về các trường hợp sử dụng PST.

Phát hành và sử dụng mã thông báo

Quá trình triển khai PST diễn ra theo ba giai đoạn:

  1. Đang phát hành mã thông báo
  2. Sử dụng mã thông báo
  3. Chuyển tiếp hồ sơ đổi thưởng

Trong giai đoạn đầu, mã thông báo được phát hành cho trình duyệt (thường là sau một số loại xác thực). Trong giai đoạn thứ hai, một thực thể khác sẽ yêu cầu sử dụng mã thông báo đã được phát hành để đọc giá trị trong mã thông báo đó. Trong giai đoạn cuối cùng, bên đổi sẽ nhận được bản ghi đổi thưởng (RR) có giá trị có trong mã thông báo. Khi đó, bên đổi thưởng đó có thể sử dụng bản ghi đó làm giấy xác nhận của người dùng đó cho nhiều mục đích.

Quy trình cơ bản của Mã thông báo trạng thái riêng tư.
Sơ đồ trình tự: Sơ đồ này cho thấy cách sử dụng cơ bản của PST trong tình huống thực tế, trong đó hai trang web muốn trao đổi một số tín hiệu về phiên bản Chrome cụ thể đó. Hai trang web này thực hiện các hoạt động phát hành và đổi thưởng tại những thời điểm khác nhau, do đó có thể trao đổi tín hiệu đáng tin cậy giữa hai trang web này.

Xác định chiến lược mã thông báo

Để xác định chiến lược mã thông báo, bạn cần nắm được các khái niệm chính của PST (mã thông báo và hồ sơ đổi thưởng), biến, hành vi và giới hạn để có thể suy nghĩ về cách sử dụng tiềm năng cho trường hợp sử dụng của mình.

Mã thông báo và hồ sơ đổi thưởng: mối quan hệ giữa chúng là gì?

Mỗi thiết bị có thể lưu trữ tối đa 500 mã thông báo cho mỗi trang web và nhà phát hành cấp cao nhất. Ngoài ra, mỗi mã thông báo có siêu dữ liệu cho biết khoá mà nhà phát hành dùng để phát hành mã đó. Thông tin đó có thể được dùng để quyết định sử dụng hay không sử dụng mã thông báo trong quá trình sử dụng. Dữ liệu PST được trình duyệt lưu trữ nội bộ trên thiết bị của người dùng và chỉ API PST mới có thể truy cập được.

Khi một mã thông báo được sử dụng, Bản ghi đổi thưởng (RR) sẽ được lưu trữ trên thiết bị. Bộ nhớ này hoạt động như một bộ nhớ đệm cho các lượt sử dụng ưu đãi sau này. Mỗi thiết bị, trang và nhà phát hành có giới hạn sử dụng hai mã thông báo trong mỗi 48 giờ. Các lệnh gọi đổi thưởng mới sẽ sử dụng các RR đã lưu vào bộ nhớ đệm nếu có thể, thay vì gửi yêu cầu đến công ty phát hành.

Mối quan hệ giữa PST và RR.
  1. Các mã thông báo mới được phát hành (tối đa 500 mã thông báo cho mỗi nhà phát hành, trang web và thiết bị).
  2. Tất cả mã thông báo đều được lưu trữ trên kho lưu trữ mã thông báo trên thiết bị (tương tự như kho lưu trữ cookie).
  3. Nếu không tìm thấy RR nào đang hoạt động, thì hệ thống có thể tạo RR mới sau khi phát hành (tối đa 2 RR mỗi 48 giờ).
  4. RR được coi là đang hoạt động cho đến khi hết hạn và sẽ được dùng làm bộ nhớ đệm cục bộ.
  5. Các lệnh gọi đổi thưởng mới sẽ chuyển đến bộ nhớ đệm cục bộ (không có RR mới nào được tạo).

Sau khi xác định trường hợp sử dụng, bạn phải xác định cẩn thận thời gian tồn tại của RR vì việc này sẽ xác định số lần bạn có thể sử dụng chúng trong trường hợp của mình.

Hãy đảm bảo rằng bạn hiểu được các hành vi và biến quan trọng sau đây trước khi xác định chiến lược:

Biến / hành vi Nội dung mô tả Khả năng sử dụng
Siêu dữ liệu về khoá mã thông báo Mỗi mã thông báo có thể được phát hành bằng cách sử dụng một và chỉ một khoá mã hoá và theo Giờ chuẩn Thái Bình Dương (PST), mỗi nhà phát hành chỉ được có tối đa 6 khoá. Một cách có thể để sử dụng biến này là xác định phạm vi độ tin cậy cho mã thông báo của bạn dựa trên khoá mã hoá (ví dụ: khoá 1 = độ tin cậy cao trong khi khoá 6 = không có độ tin cậy).
Ngày hết hạn của mã thông báo Ngày hết hạn của mã thông báo giống với ngày hết hạn của khoá. Bạn có thể xoay vòng khoá ít nhất 60 ngày một lần và tất cả mã thông báo được phát hành bằng khoá không hợp lệ cũng sẽ bị coi là không hợp lệ.
Giới hạn tỷ lệ sử dụng mã thông báo Mỗi thiết bị và nhà phát hành có giới hạn 48 giờ sử dụng mã thông báo. Tuỳ thuộc vào số lượt sử dụng dữ liệu ước tính mà trường hợp sử dụng của bạn yêu cầu mỗi 48 giờ.
Số lượng nhà phát hành tối đa trên mỗi nguồn gốc cấp cao nhất Số nhà phát hành tối đa cho mỗi nguồn gốc cấp cao nhất hiện là hai. Xác định cẩn thận nhà phát hành của mỗi trang.
Số mã thông báo của mỗi nhà phát hành trên một thiết bị Số lượng mã thông báo tối đa cho mỗi tổ chức phát hành trên một thiết bị cụ thể hiện là 500. Hãy nhớ duy trì số lượng mã thông báo dưới 500 cho mỗi tổ chức phát hành.

Hãy nhớ xử lý các lỗi trên trang web của bạn khi cố gắng phát hành mã thông báo.
Xoay vòng các cam kết chính Mọi nhà phát hành PST bắt buộc phải hiển thị một điểm cuối có các cam kết chính có thể thay đổi sau mỗi 60 ngày và mọi chế độ xoay vòng nhanh hơn sẽ bị bỏ qua. Nếu khoá của bạn sẽ hết hạn trong vòng chưa đến 60 ngày, thì bạn bắt buộc phải cập nhật các cam kết chính trước ngày đó để tránh bị gián đoạn (xem thông tin chi tiết).
Thời gian tồn tại của hồ sơ đổi thưởng Bạn có thể xác định thời gian tồn tại của RR để xác định ngày hết hạn. Vì các RR được lưu vào bộ nhớ đệm để tránh các lệnh gọi mới không cần thiết gửi đến công ty phát hành, nên điều quan trọng là phải đảm bảo có đủ tín hiệu đổi thưởng mới. Vì có giới hạn tỷ lệ sử dụng là 2 mã thông báo cứ mỗi 48 giờ một lần, nên điều quan trọng là bạn phải xác định thời gian sử dụng của RR để có thể thực thi các lệnh gọi đổi thưởng thành công trong ít nhất khoảng thời gian này (bạn nên đặt thời gian sử dụng RR sao cho phù hợp). Bạn nên đặt thời gian hoạt động này theo thứ tự tuần.

Tình huống ví dụ

Trường hợp 1: Thời gian tồn tại của RR dưới 24 giờ (t=t) và việc sử dụng được thực hiện nhiều lần trong khoảng thời gian 48 giờ.

Ví dụ về trường hợp 1 của PST: tuổi thọ nhỏ.
Trong trường hợp này, người dùng sẽ không thể sử dụng mã thông báo mới trong khoảng thời gian 28 giờ và tất cả các RR sẽ hết hạn.

Trường hợp 2: Thời gian tồn tại của RR là 24 giờ và việc đổi thưởng được thực hiện nhiều lần trong khoảng thời gian 48 giờ.

Ví dụ về kịch bản 2 của PST: khoảng thời gian 24 giờ.
Trong trường hợp này, vì thời gian tồn tại của RR là 24 giờ, nên người dùng có thể đổi mã trong toàn bộ 48 giờ mà không bị giới hạn.

Trường hợp 3: Thời gian tồn tại của RR là 48 giờ và việc sử dụng ưu đãi được thực hiện nhiều lần trong khoảng thời gian 48 giờ.

Ví dụ về kịch bản 3 của PST: thời lượng 48 giờ.
Trong trường hợp này, vì thời gian tồn tại của RR là 48 giờ, nên người dùng có thể đổi mã trong toàn bộ 48 giờ mà không bị giới hạn.

Chạy bản minh hoạ

Trước khi sử dụng PST, bạn nên thiết lập bản minh hoạ trước. Để dùng thử bản minh hoạ PST , bạn sẽ cần chạy Chrome có cờ để bật các cam kết chính của nhà phát hành bản minh hoạ (làm theo hướng dẫn có trên trang minh hoạ).

màn hình minh hoạ PST.

Khi chạy bản minh hoạ này, trình duyệt của bạn sẽ sử dụng nhà phát hành bản minh hoạ và máy chủ sử dụng mã để cung cấp và sử dụng mã thông báo.

Những điểm cần lưu ý về mặt kỹ thuật

Bản minh hoạ sẽ chạy hiệu quả nhất nếu bạn triển khai các bước sau:

  • Đảm bảo rằng bạn dừng tất cả các phiên bản Chrome trước khi chạy Chrome có cờ.
  • Nếu bạn đang chạy trên máy Windows, hãy xem hướng dẫn này về cách truyền các tham số đến tệp nhị phân có thể thực thi của Chrome.
  • Mở Công cụ của Chrome cho nhà phát triển trong phần Ứng dụng > Bộ nhớ > Mã thông báo trạng thái riêng tư trong khi sử dụng ứng dụng minh hoạ để xem nhà phát hành bản minh hoạ đã phát hành/sử dụng mã thông báo.
Màn hình Công cụ của Chrome cho nhà phát triển đang hiển thị PST.

Thiết lập để nhận con nuôi

Trở thành tài khoản phát hành

Nhà phát hành đóng vai trò quan trọng trong PST. Mô-đun này gán giá trị cho mã thông báo để xác định xem người dùng có phải là bot hay không. Nếu muốn bắt đầu với tư cách là nhà phát hành PST, bạn cần đăng ký bằng cách hoàn tất Quy trình đăng ký với công ty phát hành.

Để đăng ký trở thành nhà phát hành, người vận hành trang web của nhà phát hành phải mở một vấn đề mới trên kho lưu trữ GitHub bằng mẫu "Công cụ phát hành PST mới". Làm theo hướng dẫn trên kho lưu trữ để điền vấn đề. Sau khi được xác minh, một điểm cuối sẽ được hợp nhất vào kho lưu trữ này và cơ sở hạ tầng phía máy chủ của Chrome sẽ bắt đầu tìm nạp các khoá đó.

Máy chủ của tổ chức phát hành

Nhà phát hành và người sử dụng ưu đãi là các đối tượng chính của PST; máy chủ và mã thông báo là các công cụ chính cho PST. Mặc dù đã cung cấp một số thông tin chi tiết về mã thông báo và trong tài liệu GitHub, nhưng chúng tôi muốn cung cấp thêm thông tin chi tiết về các máy chủ PST. Để được thiết lập với tư cách là nhà phát hành PST, trước tiên, bạn cần thiết lập một máy chủ phát hành.

Triển khai môi trường của bạn: máy chủ của nhà phát hành

Để triển khai máy chủ của nhà phát hành mã thông báo, bạn cần xây dựng ứng dụng phía máy chủ của riêng mình để cho thấy các điểm cuối HTTP.

Thành phần nhà phát hành bao gồm 2 mô-đun chính: (1) máy chủ phát hành và (2) nhà phát hành mã thông báo.

Các thành phần của máy chủ cấp.

Giống như tất cả các ứng dụng giao diện web, bạn nên sử dụng thêm một lớp bảo vệ cho máy chủ của nhà phát hành.

  1. Máy chủ phát hành: Trong ví dụ về cách triển khai, máy chủ phát hành của chúng tôi là máy chủ Node.js sử dụng khung Express để lưu trữ các điểm cuối HTTP của công ty phát hành. Bạn có thể xem mã mẫu trên GitHub.

  2. Nhà phát hành mã thông báo: Thành phần mật mã của nhà phát hành không yêu cầu ngôn ngữ cụ thể nào nhưng do các yêu cầu về hiệu suất của thành phần này, nên chúng tôi cung cấp phương thức triển khai C làm ví dụ, sử dụng thư viện Boring SSL để quản lý mã thông báo. Bạn có thể tìm thấy ví dụ về mã phát hành và thêm thông tin về cách cài đặt trên GitHub

  3. Khoá: Thành phần của tổ chức phát hành mã thông báo sử dụng khoá EC tuỳ chỉnh để mã hoá mã thông báo. Các khoá này phải được bảo vệ và lưu trữ trong bộ nhớ an toàn.

Yêu cầu kỹ thuật đối với máy chủ của nhà phát hành

Theo giao thức, bạn cần triển khai ít nhất 2 điểm cuối HTTP trong máy chủ của nhà phát hành:

  • Cam kết khoá (ví dụ: /.well-known/private-state-token/key-commitment): Điểm cuối này là nơi thông tin chi tiết về khoá công khai mã hoá của bạn sẽ được cung cấp cho các trình duyệt để xác nhận rằng máy chủ của bạn là hợp lệ.
  • Phát hành mã thông báo (ví dụ: /.well-known/private-state-token/issuance): Điểm cuối cấp mã thông báo nơi sẽ xử lý tất cả các yêu cầu mã thông báo. Điểm cuối này sẽ là điểm tích hợp cho thành phần của nhà phát hành mã thông báo.

Như đã đề cập trước đó, do lưu lượng truy cập dự kiến cao mà máy chủ này có thể xử lý, bạn nên triển khai máy chủ bằng cách sử dụng cơ sở hạ tầng có thể mở rộng (ví dụ: trong môi trường đám mây) để có thể điều chỉnh phần phụ trợ dựa trên nhu cầu thay đổi.

Gửi cuộc gọi đến máy chủ của nhà phát hành

Triển khai lệnh gọi tìm nạp trang web đến ngăn xếp nhà phát hành để phát hành mã thông báo mới.

 // issuer request
    await fetch("/.well-known/private-state-token/issuance", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "token-request"
      }
    });

Xem mã ví dụ.

Máy chủ Đổi

Bạn sẽ cần triển khai dịch vụ sử dụng mã thông báo bằng cách tạo ứng dụng phía máy chủ của riêng mình. Thao tác này sẽ cho phép bạn đọc các mã thông báo mà tổ chức phát hành gửi đi. Các bước sau đây trình bày cách sử dụng mã thông báo cũng như cách đọc hồ sơ sử dụng mã được liên kết với các mã đó.

Bạn có thể chọn chạy trình phát hành và trình sử dụng phần thưởng trong cùng một máy chủ (hoặc nhóm máy chủ).

Các thành phần của máy chủ Đổi quà.
Các thành phần minh hoạ PST: Đây là các thành phần chính của máy chủ đổi phần thưởng. Máy chủ đổi mã thông báo (Ứng dụng Node.js) và Mã thông báo (thành phần mật mã chịu trách nhiệm xác minh chữ ký và mã thông báo trong quá trình sử dụng mã).

Yêu cầu kỹ thuật đối với máy chủ của chương trình đổi thưởng

Theo giao thức, bạn cần triển khai ít nhất hai điểm cuối HTTP cho máy chủ đổi thưởng của mình:

  • /.well-known/private-state-token/redemption: điểm cuối nơi mọi yêu cầu đổi mã thông báo sẽ được xử lý. Điểm cuối này sẽ là nơi tích hợp thành phần sử dụng mã thông báo

Gửi cuộc gọi đến máy chủ của người sử dụng ưu đãi

Để sử dụng mã thông báo, bạn cần triển khai lệnh gọi tìm nạp trang web đến ngăn xếp của người sử dụng ưu đãi để sử dụng các mã thông báo được cấp trước đó.

    // redemption request
    await fetch("/.well-known/private-state-token/redemption", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "token-redemption",
        refreshPolicy: "none"
      }
    });

Xem mã mẫu.

Sau khi sử dụng mã thông báo, bạn có thể gửi bản ghi đổi thưởng (RR) bằng cách thực hiện một lệnh gọi tìm nạp khác:

    // attach redemption records from the issuers to the request
    await fetch("<DESTINATION_RESOURCE>", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "send-redemption-record",
        issuers: [<ISSUER_DOMAIN>]
      }
    });

Xem mã mẫu.

Triển khai việc triển khai

Để kiểm tra cách triển khai của bạn, trước tiên, hãy chuyển đến trang web thực hiện lệnh gọi và xác nhận rằng(các) mã thông báo được tạo theo logic của bạn. Xác minh trong phần phụ trợ của bạn rằng các lệnh gọi được thực hiện theo thông số kỹ thuật. Sau đó, hãy chuyển đến trang web nơi thực hiện lệnh gọi sử dụng ưu đãi và xác nhận rằng các RR đã được tạo theo logic của bạn.

Triển khai thực tế

Bạn nên chọn các trang web mục tiêu trong trường hợp sử dụng cụ thể của mình:

  • Số lượt truy cập hằng tháng nhỏ (~ <1 triệu lượt truy cập/tháng): Trước tiên, bạn nên bắt đầu bằng cách triển khai API cho một nhóm nhỏ đối tượng
  • Bạn sở hữu và kiểm soát quy trình này: Nếu cần, bạn có thể nhanh chóng tắt quy trình triển khai mà không cần các quy trình phê duyệt phức tạp
  • Không nhiều nhà phát hành: Để giới hạn số lượng mã thông báo nhằm đơn giản hoá quá trình kiểm thử.
  • Không quá 2 người sử dụng: Bạn cần đơn giản hoá việc khắc phục sự cố trong trường hợp xảy ra sự cố.

Khắc phục sự cố

Bạn có thể kiểm tra PST từ thẻ Mạng và ứng dụng Công cụ của Chrome cho nhà phát triển.

Trên thẻ Mạng:

Công cụ kiểm tra Công cụ cho nhà phát triển trong thẻ Mạng.
Kiểm tra DevTools cho PST: Chuyển đến Mạng > Mã thông báo trạng thái riêng tư để xem tất cả thông tin liên quan về mã thông báo và nhà phát hành của một trang cụ thể.

Trên thẻ Ứng dụng:

Kiểm tra Công cụ cho nhà phát triển cho thẻ Ứng dụng.
Kiểm tra DevTools dành cho PST: Chuyển đến phần Ứng dụng > Mã thông báo trạng thái riêng tư để xem tất cả thông tin liên quan về mã thông báo và nhà phát hành của một trang cụ thể.

Đọc thêm về việc tích hợp DevTools này.

Khắc phục sự cố và các phương pháp hay nhất về máy chủ

Để nhà phát hành và máy chủ đổi thưởng hoạt động hiệu quả, bạn nên triển khai các phương pháp hay nhất sau đây để đảm bảo không gặp phải bất kỳ thách thức nào về việc truy cập, bảo mật, ghi nhật ký hoặc lưu lượng truy cập đối với PST.

  • Điểm cuối của bạn phải áp dụng phương thức mã hoá mạnh bằng cách sử dụng TLS 1.3 hoặc 1.2.
  • Cơ sở hạ tầng của bạn phải sẵn sàng để xử lý lưu lượng truy cập có thể thay đổi (bao gồm cả tăng đột biến).
  • Hãy đảm bảo các khoá của bạn được bảo vệ và an toàn, phù hợp với Chính sách kiểm soát quyền truy cập, Chiến lược quản lý khoá và Kế hoạch duy trì hoạt động kinh doanh liên tục.
  • Thêm các chỉ số về khả năng quan sát vào ngăn xếp để đảm bảo bạn có thể hiểu được mức sử dụng, điểm tắc nghẽn và các vấn đề về hiệu suất sau khi chuyển sang giai đoạn phát hành chính thức.

Thông tin khác

  1. Xem tài liệu dành cho nhà phát triển:
    1. Bắt đầu bằng cách đọc tổng quan để nắm bắt nhanh chóng PST và các tính năng của PST.
    2. Xem video giới thiệu về PST.
    3. Hãy xem bản minh hoạ PST.
    4. Ngoài ra, hãy đọc nội dung giải thích về API để hiểu thêm thông tin chi tiết về API đó.
    5. Đọc thêm về thông số kỹ thuật hiện tại của API.
  2. Đóng góp vào cuộc trò chuyện thông qua các vấn đề trong GitHub hoặc các lệnh gọi W3C.
  3. Để hiểu rõ hơn về bất kỳ thuật ngữ nào, hãy xem Bảng thuật ngữ Hộp cát về quyền riêng tư.
  4. Để tìm hiểu thêm về các khái niệm của Chrome, chẳng hạn như "bản dùng thử theo nguyên gốc" hoặc "cờ Chrome", hãy xem các video ngắn và bài viết có sẵn tại goo.gle/cc.