Federated Credential Management (FedCM) API
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Federated Credential Management API (hay FedCM API) cung cấp một cơ chế tiêu chuẩn để các nhà cung cấp danh tính (IdP) triển khai các dịch vụ liên danh tính trên web theo cách bảo vệ quyền riêng tư, mà không cần sử dụng cookie của bên thứ ba và chuyển hướng. Điều này bao gồm một JavaScript API cho phép sử dụng xác thực liên danh cho các hoạt động như đăng nhập hoặc đăng ký trên một trang web.
Các khái niệm FedCM
Liên danh tính là việc ủy quyền xác thực người dùng từ một trang web yêu cầu đăng ký hoặc đăng nhập người dùng, chẳng hạn như trang thương mại điện tử hoặc mạng xã hội (còn gọi là bên dựa vào hay RP), đến một nhà cung cấp danh tính đáng tin cậy của bên thứ ba (IdP) như Google, Facebook/Meta, GitHub, v.v.
Các RP có thể tích hợp với các IdP, cho phép người dùng đăng nhập bằng các tài khoản đã đăng ký với IdP. Việc liên danh tính thông qua một nhóm nhỏ các IdP chuyên dụng đã cải thiện khả năng xác thực trên web về mặt bảo mật, sự tin tưởng của người dùng và trải nghiệm người dùng, so với việc mỗi trang tự quản lý việc đăng nhập với tên người dùng và mật khẩu riêng.
Vấn đề là liên danh tính truyền thống dựa vào <iframe>, chuyển hướng và cookie của bên thứ ba, những tính năng này cũng được sử dụng để theo dõi người dùng của bên thứ ba. Các trình duyệt đang hạn chế việc sử dụng các tính năng này nhằm bảo vệ quyền riêng tư của người dùng, nhưng hệ quả là khiến các trường hợp sử dụng hợp lệ, không theo dõi trở nên khó triển khai hơn, trong đó có liên danh tính.
Điều này ảnh hưởng đến đăng nhập liên danh nói chung, cũng như các trường hợp sử dụng liên danh tính cụ thể hơn:
- OIDC front-channel logout: Luồng này yêu cầu IDP nhúng nhiều
<iframe>RP, vốn dựa vào cookie RP. - Social Widgets: Để cung cấp các widget xã hội, cookie của bên thứ ba IdP phải được cung cấp từ nguồn gốc cấp cao nhất của RP.
- Personalized buttons: Việc hiển thị thông tin đăng nhập được cá nhân hóa trên
<button>trong nguồn gốc RP được triển khai dưới dạng<iframe>IdP yêu cầu cookie của bên thứ ba. - Làm mới phiên mà không cần điều hướng cấp cao nhất hoặc cửa sổ popup.
FedCM nhằm giải quyết vấn đề này, cung cấp một cơ chế chuyên dụng cho các luồng liên danh tính trên web, và cho phép các trình duyệt hỗ trợ cung cấp các phần tử UI đặc biệt trên RP, cho phép người dùng chọn một tài khoản IdP để sử dụng khi đăng nhập.
Có hai phần khi sử dụng FedCM API, được đề cập trong các hướng dẫn liên kết bên dưới:
- Tích hợp IdP với FedCM — những gì nhà cung cấp danh tính cần cung cấp để RP có thể tích hợp với nó.
- Đăng nhập liên danh RP — chức năng FedCM mà RP cần sử dụng để đăng nhập người dùng bằng tài khoản IdP của họ. Một yêu cầu đăng nhập liên danh FedCM được khởi tạo bằng phương thức
navigator.credentials.get().
Note: Google Sign In là một ví dụ về IdP đã hỗ trợ FedCM. Di chuyển sang FedCM cung cấp hướng dẫn cho các RP muốn di chuyển ứng dụng hiện có sử dụng Google Sign In sang đăng nhập liên danh.
Tích hợp Permissions Policy và hỗ trợ <iframe>
identity-credentials-get Permissions-Policy có thể được sử dụng để kiểm soát quyền sử dụng FedCM.
Cụ thể hơn, nó cho phép sử dụng các phương thức sau:
Nhà phát triển có thể cấp quyền rõ ràng cho <iframe> sử dụng FedCM thông qua thuộc tính allow:
<iframe src="3rd-party.example" allow="identity-credentials-get"></iframe>
Việc khả dụng của FedCM trong <iframe> cho phép một số trường hợp sử dụng:
- Các trang web lớn hơn sẽ không muốn script đăng nhập của bên thứ ba giành quyền kiểm soát khung cấp cao nhất; thay vào đó họ muốn thêm script đó và gọi FedCM từ bên trong
<iframe>. - Một số
<iframe>có thể tự yêu cầu xác thực liên danh.
Interface
IdentityCredential-
Đại diện cho thông tin xác thực danh tính người dùng phát sinh từ việc xác thực liên danh thành công. Một lệnh gọi
navigator.credentials.get()thành công bao gồm tùy chọnidentitysẽ trả về một phiên bảnIdentityCredential. IdentityCredentialError-
Đại diện cho lỗi xác thực cho biết tác nhân người dùng không nhận được xác nhận danh tính sau khi người dùng yêu cầu xác thực bằng thông tin xác thực liên danh.
IdentityProvider-
Đại diện cho một IdP và cung cấp quyền truy cập vào thông tin cũng như chức năng liên quan.
-
Định nghĩa chức năng đăng nhập cho IdP, bao gồm phương thức
Navigator.login.setStatus()để cập nhật trạng thái đăng nhập IdP.
Mở rộng cho các interface khác
CredentialsContainer.get(), tùy chọnidentity.-
identitylà một đối tượng chứa chi tiết về IdP liên danh mà trang web bên dựa vào (RP) có thể sử dụng để đăng nhập người dùng. Nó khiến lệnh gọiget()khởi tạo yêu cầu để người dùng đăng nhập vào RP bằng IdP. -
Cung cấp quyền truy cập vào đối tượng
NavigatorLogincủa trình duyệt.
Tiêu đề HTTP
Set-Login-
Cung cấp cơ chế HTTP để cập nhật trạng thái đăng nhập qua HTTP.
Ví dụ
Về mã ví dụ, xem:
- Triển khai giải pháp danh tính với FedCM ở phía Nhà cung cấp danh tính trên developer.chrome.com (2025)
- Triển khai giải pháp danh tính với FedCM ở phía Bên dựa vào trên developer.chrome.com (2025)
Đặc điểm kỹ thuật
| Specification |
|---|
| Federated Credential Management API> # browser-api-identity-credential-interface> |