Mulai Chrome 123, Anda dapat menggunakan Petunjuk Domain bersama Federated Credential Management API (FedCM). Dengan Domain Hint API, pengembang bisa memberikan pengalaman pengguna yang lebih baik hanya dengan yang menampilkan akun {i>login<i} gabungan dari domain yang mereka terima.
API Petunjuk Domain
FedCM dapat digunakan untuk memudahkan pengguna untuk {i>login<i} ke {i>relying party<i} (RP, merujuk ke situs) menggunakan informasi akun yang disediakan oleh suatu identitas (IdP). Namun, ada kasus di mana RP sudah tahu bahwa hanya akun yang terkait dengan domain tertentu diizinkan untuk masuk ke situs. Ini sangat umum terjadi dalam skenario perusahaan di mana situs yang diakses dibatasi untuk domain perusahaan. Untuk memberikan pengalaman pengguna yang lebih baik, FedCM API memungkinkan RP untuk hanya menampilkan akun yang dapat digunakan untuk login ke RP. Hal ini mencegah skenario di mana pengguna mencoba masuk ke RP menggunakan di luar domain perusahaan, hanya untuk menerima pesan {i>error<i} nanti (atau senyapkan di mana {i>login<i} tidak berfungsi) karena jenis akun tidak digunakan.
Dengan Domain Hint API, RP dapat menentukan properti domainHint
di FedCM API
untuk menampilkan hanya akun yang cocok bagi pengguna. IdP dapat memberikan
domain_hints
sebagai bagian dari respons dari daftar akun
endpoint ke
menunjukkan domain mana 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 ini:
{
"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
untuk memfilter akun. Misalnya, pengguna mengunjungi corp-partner.example
dan
login dengan akun dari corp.example
. Situs akan memanggil API sebagai
berikut ini:
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 daftar akun
endpoint
untuk pemfilteran sisi server, karena metode tersebut dapat menjadi vektor pelacakan sidik jari ke IdP.
Sebagai gantinya, Chrome melakukan permintaan FedCM seperti biasa, dan memfilter akun
yang tidak sesuai dengan nilai domainHint
yang ditentukan oleh
navigator.credentials.get()
panggilan. Kemudian, Chrome menampilkan dialog FedCM ke
dengan daftar akun baru. Pendekatan ini mirip dengan Petunjuk Login
API, tetapi kedua fitur ini
API menjawab pertanyaan yang berbeda. Login Hint API bertujuan menjawab "yang merupakan
untuk pengguna yang saya inginkan?", sedangkan {i>Domain Hint<i} bertujuan untuk menjawab
perusahaan atau server yang harus dimiliki 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 ketika RP hanya mengizinkan akun terkelola dalam pendaftarannya
{i>checkout<i}.
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
di RP. Saat pengguna mengetuk perintah tersebut, jendela pop-up akan terbuka dengan
URL login yang ditentukan dalam config
. Link-nya adalah
kemudian ditambahkan dengan petunjuk {i>login<i}
dan parameter kueri petunjuk domain.