Mulai Chrome 123, Anda dapat menggunakan Domain Hints bersama Federated Credential Management API (FedCM). Dengan Domain Hint API, developer dapat memberikan pengalaman pengguna yang lebih baik dengan hanya menampilkan akun login gabungan dari domain yang mereka terima.
API Petunjuk Domain
FedCM dapat digunakan untuk mempermudah pengguna login ke pihak tepercaya (RP, yang merujuk ke situs) menggunakan informasi akun yang disediakan oleh penyedia identitas (IdP). Namun, ada kasus saat RP sudah mengetahui bahwa hanya akun yang terkait dengan domain tertentu yang diizinkan untuk login ke situs. Hal ini sangat umum dalam skenario perusahaan saat situs yang diakses dibatasi untuk domain perusahaan. Untuk memberikan pengalaman pengguna yang lebih baik, FedCM API memungkinkan RP hanya menampilkan akun yang dapat digunakan untuk login ke RP. Tindakan ini mencegah skenario saat pengguna mencoba login ke RP menggunakan akun di luar domain perusahaan, hanya untuk menerima pesan error di lain waktu (atau membisukan saat login tidak berfungsi) karena jenis akun yang tepat tidak digunakan.
Dengan Domain Hint API, RP dapat menentukan properti domainHint
pada panggilan FedCM API
untuk hanya menampilkan akun yang cocok bagi pengguna. IdP dapat memberikan
properti domain_hints
sebagai bagian dari respons dari endpoint daftar akun untuk
menunjukkan domain yang terkait dengan akun. Dengan cara ini, browser
dapat menampilkan akun yang cocok tanpa mengungkapkan petunjuk domain yang diminta kepada
IdP.
Contoh respons JSON dari endpoint daftar akun akan terlihat seperti berikut:
{
"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 dapat memanggil navigator.credentials.get()
dengan properti domainHint
untuk
memfilter akun. Misalnya, pengguna mengunjungi corp-partner.example
dan
login dengan akun dari corp.example
. Situs akan memanggil API sebagai
berikut:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
Nilai domainHint
tidak dikirim ke endpoint daftar akun untuk pemfilteran sisi server, karena nilai tersebut dapat menjadi vektor pelacakan sidik jari ke IdP.
Sebagai gantinya, Chrome akan melakukan permintaan FedCM seperti biasa, dan memfilter akun
yang tidak cocok dengan nilai domainHint
yang ditentukan oleh
panggilan navigator.credentials.get()
. Kemudian, Chrome akan menampilkan dialog FedCM kepada
pengguna dengan daftar akun baru. Pendekatan ini mirip dengan Login Hint
API, tetapi kedua
API ini menjawab pertanyaan yang berbeda. Login Hint API bertujuan untuk menjawab "manakah
ID untuk pengguna yang saya inginkan?", sedangkan Domain Hint bertujuan untuk menjawab "perusahaan atau server manakah yang harus dimiliki akun ini?".
Saat domainHint: "any"
digunakan, Chrome akan memfilter akun yang tidak memiliki
domain (yaitu, domain_hints
tidak diteruskan atau kosong). Misalnya,
hal ini memungkinkan kasus penggunaan saat RP hanya mengizinkan akun terkelola dalam proses
pendaftarannya.
Jika tidak ada akun yang cocok dengan domainHint
, dialog FedCM akan menampilkan perintah login,
yang memungkinkan pengguna login ke akun IdP yang cocok dengan petunjuk yang diminta oleh
RP. Saat pengguna mengetuk perintah tersebut, jendela pop-up akan terbuka dengan URL login yang ditentukan dalam file konfigurasi. Link tersebut
kemudian ditambahkan dengan parameter kueri petunjuk login dan petunjuk domain.