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

Federated Credential Management API (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 phụ thuộc) 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à RP và IdP trao đổi thông tin. Thông báo này cho người dùng biết về thông tin và cấp độ đặc quyền đang được chia sẻ, đồng thời ngăn chặn hành vi sử dụng sai trái ngoài ý muốn. FedCM đã có trong Chrome kể từ phiên bản 108.

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

Tính năng FedCM tự động xác thực lại (viết tắt là "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 khi xác thực lần đầu bằng FedCM. "Quy trình xác thực ban đầu" ở đâ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 của RP bằng cách nhấn vào nút "Tiếp tục dưới dạ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.

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 đang 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 với 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, thuộc tính này hoạt động theo cách tương tự như đối với PasswordCredentialFederatedCredential, đồng thời cũng được PublicKeyCredential hỗ trợ một phần. Thuộc tính này chấp nhận 4 giá trị sau:

  • 'required': Luôn yêu cầu một hoạt động dàn xếp để tiếp tục, ví dụ: 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 bạn muốn người dùng 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. 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ể, âm thầm 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 không phải là trang đăng nhập chuyên dụng nhưng là nơi bạn muốn người dùng luôn đăng nhập, ví dụ: trang mặt hàng trên trang web 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 dùng đượ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ể sử dụng FedCM. Ví dụ: người dùng chưa tắt FedCM trên toàn cục hoặc cho 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 lại không xảy ra trong vòng 10 phút qua.
  • RP chưa gọi navigator.credentials.preventSilentAccess() sau khi đăng nhập trước đó.

Khi các điều kiện trên được đáp ứng, thao tác tự động xác thực lại người dùng sẽ bắt đầu ngay khi navigator.credentials.get() FedCM đượ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 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à tính năng tự động xác thực lại sẽ xảy 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 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 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 > Tự động đăng nhập.
  • Trên Chrome cho Android, hãy mở phần Cài đặt > Trình quản lý mật khẩu > Nhấn vào biểu tượng bánh răng ở góc trên cùng bên phải > Tự động đăng nhập.

Bằng cách 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 một Tài khoản Google trên phiên bản Chrome và đã bật tính năng đồng bộ hoá.

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 gặp phải tại crbug.com trong thành phần "Blink>Identity>FedCM".

Ảnh chụp của Noah Samuel Franz trên Unsplash