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 web để liên kết danh tính bảo đảm quyền riêng tư. Với liên kết danh tính, RP (bên tin cậy) dựa vào một IdP (nhà cung cấp danh tính) để cung cấp cho người dùng mà không cần tên người dùng và mật khẩu mới.

FedCM giúp trình duyệt hiểu được bối cảnh mà RP và IdP (nhà cung cấp danh tính) trao đổi thông tin. Nó thông báo cho người dùng về thông tin và đặc quyền được chia sẻ và ngăn chặn hành vi sai trái ngoài ý muốn. FedCM hiện đã có ở Chrome kể từ phiên bản 108.

Trong Chrome 115, FedCM sẽ hỗ trợ tính năng tự động xác thực lại. Tính năng này giúp cải thiện trải nghiệm người dùng và cho phép xác thực lại đơn giản hơn cho RP sau khi có sự đồ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 một bên bị hạn chế thông qua một IdP (nhà cung cấp danh tính) thông qua API FedCM, vào lần tới khi họ truy cập vào trang web mà họ 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 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à có ý nghĩa trước khi người dùng tạo tài khoản liên kết để ngăn chặn việc theo dõi (một trong những mục tiêu chính của FedCM), nó cồng kềnh không cần thiết sau khi người dùng đã trải qua 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, không có lợi ích về quyền riêng tư hoặc bảo mật khi thực thi một người dùng phản cảm khác xác nhận cho một điều gì đó 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 đơn giản hơn mà bên bị hạn chế có thể lựa chọn số người dùng cũ của họ.

FedCM tự động xác thực lại ("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ọ sẽ quay lại sau lần xác thực ban đầu bằng FedCM. Tên viết tắt xác thực" ở đây có nghĩa là người dùng tạo một tài khoản hoặc đăng nhập vào trang web bằng cách nhấn vào nút "Continue as..." (Tiếp tục bằng...) trên hộp thoại đăng nhập của FedCM lần đầu tiên trên cùng một phiên bản trình duyệt.

Mộ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.
Mộ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.

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

Mặc dù chúng tôi đang giới thiệu tính năng tự động xác thực lại để cung cấp trải nghiệm người dùng tốt hơn và để phù hợp với trải nghiệm người dùng mặc định sẽ khác mà không cần bất kỳ mã nào thay đổi. Với tính năng tự động xác thực lại khả dụng, trình duyệt sẽ thay đổi hành vi của mình tùy thuộc vào vào tuỳ chọn bạn chọn trong tuỳ chọn mediation mà nhà phát triển cung cấp 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 phần Quản lý thông tin xác thực API, ứng dụng sẽ hoạt động giống nhau một chút làm cho PasswordCredentialFederatedCredential và được hỗ trợ một phần bởi PublicKeyCredential của Google. Thuộc tính này chấp nhận 4 giá trị sau:

  • 'required': Luôn yêu cầu dàn xếp để tiếp tục, ví dụ: nhấp vào "Tiếp tục" trên giao diện người dùng. Chọn tùy chọn này nếu người dùng của bạn muốn cấp quyền một cách rõ ràng mỗi khi cần 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. T4 khuyên bạ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 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 ngoại trừ trang đăng nhập chuyên biệt mà là nơi bạn muốn duy trì trạng thái đăng nhập của người dùng—cho ví dụ: trang mặt hàng trên trang web vận chuyển hoặc trang bài viết trên một trang tin tức của bạn.
  • 'conditional': Đang dùng cho WebAuthn và hiện chưa có cho FedCM.

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

  • Bạn có thể dùng FedCM. Ví dụ: người dùng chưa vô hiệu hoá FedCM trên toàn cầu hoặc cho bên bị hạn chế 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.
  • Người dùng được đăng nhập vào IdP bằng tài khoản đó.
  • Quá trình tự động xác thực lại đã không xảy ra trong vòng 10 phút vừa qua.
  • Bên bị hạn chế chưa gọi Sau đó là navigator.credentials.preventSilentAccess() lần đăng nhập trước đó.

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

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

Thực thi tính năng 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 tạo ra trải nghiệm người dùng rất tốt. Đó 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 sẽ diễn ra tối đa một lần trong mỗi 10 phút 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 khi người dùng đăng xuất bên bị hạn chế, ví dụ: 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 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 trên trình đơn cài đặt:

  • Trên Chrome dành cho máy tính, hãy truy cập 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 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 tính năng tự động xác thực lại tất cả khi kết hợp cùng nhau. 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à quá trình đồng bộ hoá bật.

Chia sẻ ý kiến phản hồi

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

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