Từ Chrome 123, bạn có thể sử dụng Gợi ý về miền cùng với API Quản lý thông tin xác thực liên kết (FedCM). Bằng API Gợi ý tên miền, nhà phát triển có thể cung cấp trải nghiệm người dùng tốt hơn bằng cách chỉ hiển thị các tài khoản đăng nhập liên kết trong miền mà các tài khoản đó chấp nhận.
API Gợi ý tên miền
FedCM có thể được dùng để giúp người dùng dễ dàng đăng nhập vào một bên đáng tin cậy (RP, đề cập đến một trang web) bằng cách sử dụng thông tin tài khoản do danh tính cung cấp (IdP). Tuy nhiên, có những trường hợp mà RP đã biết rằng chỉ các tài khoản liên kết với một miền nhất định đều được phép đăng nhập vào trang web. Chiến dịch này đặc biệt phổ biến trong các tình huống doanh nghiệp khi trang web được truy cập bị hạn chế đối với miền công ty. Để cung cấp trải nghiệm người dùng tốt hơn, FedCM API chỉ cho phép RP hiển thị những tài khoản có thể dùng để đăng nhập vào bên bị hạn chế Điều này giúp ngăn chặn các trường hợp người dùng cố gắng đăng nhập vào RP bằng tài khoản bên ngoài miền công ty, chỉ được phân phát kèm theo thông báo lỗi sau này (hoặc tắt tiếng nơi thông tin đăng nhập không hoạt động) vì đúng loại tài khoản chưa được sử dụng.
Với API Gợi ý miền, bên bị hạn chế có thể chỉ định một tài sản domainHint
trên API FedCM
để chỉ hiển thị những tài khoản trùng khớp cho người dùng. IdP có thể cung cấp
domain_hints
thuộc tính như một phần của phản hồi từ danh sách tài khoản
điểm cuối thành
cho biết tài khoản được liên kết với(các) miền nào. Bằng cách này, trình duyệt
có thể hiển thị các tài khoản trùng khớp mà không tiết lộ gợi ý miền được yêu cầu cho
IdP (nhà cung cấp danh tính).
Ví dụ về phản hồi JSON từ điểm cuối danh sách tài khoản sẽ có dạng như sau sau:
{
"accounts": [{
"id": "1234",
"given_name": "John",
"name": "John Doe",
"email": "john_doe@idp.example",
"picture": "https://idp.example/profile/123",
"approved_clients": ["123", "456", "789"],
}, {
"id": "5678",
"given_name": "Johnny",
"name": "Johnny",
"email": "johnny@idp.example",
"picture": "https://idp.example/profile/456"
"approved_clients": ["abc", "def", "ghi"],
"domain_hints": ["corp.example"]
}]
}
RP có thể gọi navigator.credentials.get()
bằng thuộc tính domainHint
để
lọc các tài khoản. Ví dụ: giả sử người dùng truy cập vào corp-partner.example
và
đăng nhập bằng tài khoản từ corp.example
. Trang web sẽ gọi API dưới dạng
sau:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
Giá trị domainHint
không được gửi đến danh sách tài khoản
điểm cuối
để lọc phía máy chủ, vì đó có thể là vectơ tạo vân tay số cho IdP.
Thay vào đó, Chrome sẽ thực hiện yêu cầu FedCM như bình thường và lọc ra các tài khoản đó
không khớp với giá trị domainHint
do
Cuộc gọi navigator.credentials.get()
. Sau đó, Chrome sẽ hiển thị hộp thoại FedCM cho
người dùng với danh sách tài khoản mới. Phương pháp này tương tự như Gợi ý đăng nhập
API, nhưng hai API này
API trả lời những câu hỏi khác nhau. API Gợi ý đăng nhập nhằm trả lời "một
cho người dùng mà tôi muốn?", trong khi Gợi ý tên miền sẽ trả lời "những gì
công ty hoặc máy chủ này phải là tài khoản này không?".
Khi bạn sử dụng domainHint: "any"
, Chrome sẽ lọc ra các tài khoản không có
bất kỳ miền nào (nghĩa là domain_hints
không được truyền hoặc bị trống). Ví dụ:
điều này cho phép các trường hợp sử dụng mà RP chỉ cho phép tài khoản được quản lý trong quá trình đăng ký
của chúng tôi.
Khi không có tài khoản nào khớp với domainHint
, hộp thoại FedCM sẽ hiển thị lời nhắc đăng nhập,
cho phép người dùng đăng nhập vào một tài khoản IdP khớp với gợi ý mà
bên bị hạn chế. Khi người dùng nhấn vào lời nhắc, một cửa sổ bật lên sẽ mở ra cùng với
URL đăng nhập được chỉ định trong cấu hình
tệp. Liên kết là
rồi thêm gợi ý đăng nhập và tham số truy vấn gợi ý miền.