Mulai Chrome 123, Anda dapat menggunakan Petunjuk Domain bersama dengan 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 memudahkan pengguna login ke pihak tepercaya (RP, merujuk ke situs) menggunakan informasi akun yang diberikan 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 terjadi 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. Hal ini mencegah skenario saat pengguna mencoba login ke RP menggunakan akun di luar domain perusahaan, tetapi akan menerima pesan error di kemudian hari (atau senyap 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 dengan domain mana akun yang terkait. Dengan cara ini, browser
dapat menampilkan akun yang cocok tanpa mengungkapkan petunjuk domain yang diminta ke
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 hal tersebut dapat menjadi vektor pelacakan sidik jari ke IdP.
Sebagai gantinya, Chrome 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 menjawab "yang merupakan ID untuk pengguna yang saya inginkan?", sedangkan Domain Hint bertujuan untuk menjawab "perusahaan atau server mana yang harus milik akun ini?".
Saat domainHint: "any"
digunakan, Chrome akan memfilter akun yang tidak memiliki
domain apa pun (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, jendela pop-up akan terbuka dengan URL login yang ditentukan dalam file konfigurasi. Link tersebut
kemudian ditambahkan dengan petunjuk login dan parameter kueri petunjuk domain.