Hỗ trợ tự động xác thực lại trong FedCM

Chrome hỗ trợ tính năng tự động xác thực lại trong FedCM

API Quản lý thông tin xác thực liên kết (FedCM) là một API web để liên kết danh tính bảo đảm quyền riêng tư. Với tính năng liên kết danh tính, RP (bên trung thành) dựa vào IdP (nhà cung cấp danh tính) để cung cấp cho người dùng một tài khoản mà không yêu cầu tên người dùng và mật khẩu mới.

FedCM cho phép trình duyệt hiểu bối cảnh mà thông tin trao đổi RP và IdP. Tính năng này thông báo cho người dùng về thông tin và cấp đặc quyền đang được chia sẻ, đồng thời ngăn chặn hành vi sai trái ngoài ý muốn. FedCM đã có trong Chrome kể từ phiên bản 108.

Trong Chrome 115, FedCM đang hỗ trợ tính năng tự động xác thực lại để cải thiện trải nghiệm người dùng và cho phép quy trình xác thực lại RP đơn giản hơn sau khi đồng ý ban đầu.

Tự động xác thực lại

Hiện tại, sau khi người dùng tạo một tài khoản liên kết trên RP với IdP thông qua API FedCM, lần tiếp theo họ truy cập trang web đó cần thực hiện các bước tương tự trong giao diện người dùng. Điều đó có nghĩa là người dùng sẽ cần xác nhận lại một cách rõ ràng và thủ công để xác thực lại và tiếp tục quy trình đăng nhập.

Mặc dù trải nghiệm người dùng rõ ràng là hợp lý trước khi người dùng tạo tài khoản liên kết để ngăn hoạt động theo dõi (đây là một trong những mục tiêu chính của FedCM), nhưng việc rườm rà một cách không cần thiết sau khi người dùng đã trải qua quy trình đó một lần: sau khi người dùng cấp quyền cho phép giao tiếp giữa RP và IdP, sẽ không có lợi ích về quyền riêng tư hoặc tính bảo mật nào khi thực thi một xác nhận rõ ràng khác của người dùng đối với những nội dung mà họ đã xác nhận trước đó. Đó là lý do chúng tôi ra mắt một trải nghiệm người dùng tinh tế hơn mà các bên bị hạn chế có thể lựa chọn cho người dùng cũ của họ.

Tự động xác thực lại FedCM (gọi tắt là "auto-reauthn" ("tự động xác thực lại") có thể cho phép người dùng tự động xác thực lại, khi họ quay lại sau lần xác thực ban đầu bằng FedCM. Quy trình "Xác thực ban đầu" ở đây có nghĩa là người dùng tạo tài khoản hoặc đăng nhập vào trang web của RP bằng cách nhấn vào nút "Continue as..." (Tiếp tục dưới dạng...) lần đầu tiên trên hộp thoại đăng nhập của FedCM trên cùng một phiên bản trình duyệt.

Hộp thoại mà người dùng nhấn vào để tạo tài khoản hoặc xác thực.
Hộp thoại mà người dùng nhấn vào để tạo tài khoản hoặc xác thực.

Chọn một tuỳ chọn để tự động xác thực lại

Mặc dù chúng tôi sẽ giới thiệu tính năng tự động xác thực lại để mang lại trải nghiệm người dùng tốt hơn và phù hợp với quy cách, nhưng trải nghiệm người dùng mặc định sẽ khác mà không cần thay đổi mã. Khi có tính năng tự động xác thực lại, trình duyệt sẽ thay đổi hành vi của mình tuỳ thuộc vào tuỳ chọn bạn chọn trong tuỳ chọn mediation mà nhà phát triển cung cấp cho navigator.credentials.get().

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

mediationmột thuộc tính trong API Quản lý thông tin xác thực và hoạt động theo cách tương tự đối với PasswordCredentialFederatedCredential cũng như được PublicKeyCredential hỗ trợ một phần. Cơ sở lưu trú chấp nhận 4 giá trị sau:

  • 'required': Luôn yêu cầu tiến hành dàn xếp, chẳng hạn như nhấp vào nút "Tiếp tục" trên giao diện người dùng. Chọn tuỳ chọn này nếu người dùng của bạn dự kiến sẽ cấp quyền rõ ràng mỗi khi cần được xác thực.
  • 'optional'(mặc định): Tự động xác thực lại nếu có thể, yêu cầu dàn xếp nếu không. Bạn nên chọn tuỳ chọn này trên trang đăng nhập.
  • 'silent': Tự động xác thực lại nếu có thể, tự động không thành công mà không cần yêu cầu dàn xếp nếu không. Bạn nên chọn tuỳ chọn này trên các trang không phải trang đăng nhập chuyên dụng nhưng là nơi bạn muốn duy trì trạng thái đăng nhập của người dùng. Ví dụ: một trang về mặt hàng trên trang web về vận chuyển hoặc trang bài viết trên trang web tin tức.
  • 'conditional': Dùng cho WebAuthn và hiện không hỗ trợ FedCM.

Với lệnh gọi này, quá trình tự động xác thực lại diễn ra trong các điều kiện sau:

  • FedCM có thể sử dụng được. Ví dụ: người dùng chưa tắt FedCM trên toàn cầu hoặc RP trong phần cài đặt.
  • Người dùng chỉ sử dụng một tài khoản có API FedCM để đăng nhập vào trang web trên trình duyệt này.
  • Người dùng đăng nhập vào IdP bằng tài khoản đó.
  • Quá trình tự động xác thực đã không xảy ra trong vòng 10 phút qua.
  • RP chưa gọi navigator.credentials.preventSilentAccess() sau lần đăng nhập trước đó.

Khi các điều kiện trên được đáp ứng, việc thử tự động xác thực lại người dùng sẽ bắt đầu ngay khi navigator.credentials.get() của FedCM được gọi.

Người dùng tự động xác thực lại thông qua FedCM.

Thực thi quy trình dàn xếp bằng preventSilentAccess()

Việc tự động xác thực lại người dùng ngay sau khi họ đăng xuất sẽ không mang lại trải nghiệm tốt cho người dùng. Đó là lý do FedCM có khoảng thời gian yên tĩnh 10 phút sau khi tự động xác thực lại để ngăn chặn hành vi này. Điều này có nghĩa là quá trình tự động xác thực lại diễn ra tối đa một lần 10 phút một lần trừ phi người dùng đăng nhập lại trong vòng 10 phút. RP phải gọi navigator.credentials.preventSilentAccess() để yêu cầu trình duyệt tắt tính năng tự động xác thực lại một cách rõ ràng khi người dùng đăng xuất khỏi RP một cách rõ ràng, chẳng hạn như bằng cách nhấp vào nút đăng xuất.

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

Người dùng có thể chọn không sử dụng tính năng tự động xác thực lại trong phần cài đặt

Người dùng có thể chọn không sử dụng tính năng tự động xác thực lại trong trình đơn cài đặt:

  • Trên Chrome dành cho máy tính, hãy chuyển đến chrome://password-manager/settings > Đăng nhập tự động.
  • Trên Android Chrome, hãy mở Cài đặt > Trình quản lý mật khẩu > Nhấn vào một bánh răng ở góc trên cùng bên phải > Tự động đăng nhập.

Khi tắt nút bật/tắt, người dùng có thể chọn không sử dụng hành vi tự động xác thực lại. Chế độ cài đặt này được lưu trữ và đồng bộ hoá trên các thiết bị nếu người dùng đăng nhập vào Tài khoản Google trên phiên bản Chrome và bật tính năng đồng bộ hoá.

Chia sẻ phản hồi

Nếu đang kiểm thử FedCM, bạn có thể chia sẻ ý kiến phản hồi hoặc bất kỳ vấn đề nào bạn gặp phải tại crbug.com trong thành phần "Blink>Identity>FedCM".

Ảnh của Noah Samuel Jr trên Unsplash