Chrome mendukung autentikasi ulang otomatis di FedCM
Federated Credential Management API (FedCM) adalah API web untuk penggabungan identitas yang menjaga privasi. Dengan penggabungan identitas, RP (pihak tepercaya) mengandalkan IdP (penyedia identitas) untuk memberi pengguna akun tanpa memerlukan nama pengguna dan sandi baru.
FedCM memungkinkan browser memahami konteks tempat RP dan IdP bertukar informasi. API ini memberi tahu pengguna tentang tingkat informasi dan hak istimewa yang dibagikan serta mencegah penyalahgunaan yang tidak diinginkan. FedCM telah tersedia di Chrome sejak versi 108.
Di Chrome 115, FedCM mendapatkan dukungan untuk autentikasi ulang otomatis yang meningkatkan pengalaman pengguna dan memungkinkan autentikasi ulang yang lebih sederhana ke RP setelah izin awal.
Autentikasi ulang otomatis
Saat ini, setelah pengguna membuat akun gabungan di RP dengan IdP melalui FedCM API, saat berikutnya mereka mengunjungi situs, mereka harus melalui langkah-langkah yang sama di antarmuka pengguna. Artinya, pengguna harus mengonfirmasi ulang secara eksplisit dan manual untuk melakukan autentikasi ulang dan melanjutkan alur login.
Meskipun pengalaman pengguna yang eksplisit masuk akal sebelum pengguna membuat akun gabungan untuk mencegah pelacakan (yang merupakan salah satu sasaran utama FedCM), akan cukup rumit setelah pengguna melakukannya sekali: setelah pengguna memberikan izin untuk memungkinkan komunikasi antara RP dan IdP, tidak ada manfaat privasi atau keamanan untuk menerapkan konfirmasi pengguna eksplisit lainnya untuk sesuatu yang telah mereka konfirmasi sebelumnya. Itulah sebabnya kami memperkenalkan UX yang lebih sederhana yang dapat dipilih RP untuk pengguna yang kembali.
Autentikasi ulang otomatis FedCM (singkatan "auto-reauthn") dapat mengizinkan pengguna melakukan autentikasi ulang secara otomatis saat mereka kembali setelah autentikasi awal menggunakan FedCM. "Autentikasi awal" di sini berarti pengguna membuat akun atau login ke situs RP dengan mengetuk tombol "Continue as..." pada dialog login FedCM untuk pertama kalinya pada instance browser yang sama.
![Dialog yang diketuk pengguna untuk membuat akun atau mengautentikasi.](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/a-dialog-user-taps-to-c-c86e154d4a899.png?authuser=6&hl=id)
Pilih opsi untuk autentikasi ulang otomatis
Meskipun kami memperkenalkan autentikasi ulang otomatis untuk memberikan UX yang lebih baik dan agar selaras dengan
spesifikasi, pengalaman pengguna default akan berbeda tanpa perubahan
kode apa pun. Dengan tersedianya autentikasi ulang otomatis, browser akan mengubah perilakunya bergantung
pada opsi yang Anda pilih dalam opsi mediation
yang disediakan developer dengan
navigator.credentials.get()
.
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/fedcm.json",
clientId: "1234",
}],
},
mediation: 'optional', // this is the default
});
mediation
adalah properti di Credential Management
API,
berperilaku dengan cara
yang sama seperti
yang dilakukan untuk
PasswordCredential
dan
FederatedCredential
dan juga didukung sebagian oleh
PublicKeyCredential. Properti ini menerima empat nilai berikut:
'required'
: Selalu mewajibkan mediasi untuk melanjutkan, misalnya mengklik tombol "Lanjutkan" di UI. Pilih opsi ini jika pengguna Anda diharapkan untuk memberikan izin secara eksplisit setiap kali mereka perlu diautentikasi.'optional'
(default): Autentikasi ulang otomatis jika memungkinkan, memerlukan mediasi jika tidak. Sebaiknya pilih opsi ini di halaman login.'silent'
: Autentikasi ulang otomatis jika memungkinkan, otomatis gagal tanpa memerlukan mediasi jika tidak. Sebaiknya pilih opsi ini di halaman selain halaman login khusus, tetapi tempat Anda ingin pengguna tetap login, misalnya, halaman item di situs pengiriman atau halaman artikel di situs berita.'conditional'
: Digunakan untuk WebAuthn dan tidak tersedia untuk FedCM saat ini.
Dengan panggilan ini, autentikasi ulang otomatis terjadi dalam kondisi berikut:
- FedCM tersedia untuk digunakan. Misalnya, pengguna belum menonaktifkan FedCM baik secara global maupun untuk RP di setelan.
- Pengguna hanya menggunakan satu akun dengan FedCM API untuk login ke situs di browser ini.
- Pengguna login ke IdP dengan akun tersebut.
- Autentikasi ulang otomatis tidak terjadi dalam 10 menit terakhir.
- RP belum memanggil
navigator.credentials.preventSilentAccess()
setelah login sebelumnya.
Jika kondisi di atas terpenuhi, upaya untuk mengautentikasi ulang pengguna secara otomatis akan dimulai segera setelah FedCM navigator.credentials.get()
dipanggil.
Terapkan mediasi dengan preventSilentAccess()
Autentikasi ulang otomatis pengguna segera setelah mereka logout tidak akan memberikan pengalaman pengguna yang sangat baik. Itulah sebabnya FedCM memiliki masa tenang 10 menit setelah autentikasi ulang otomatis untuk mencegah perilaku ini. Artinya, autentikasi ulang otomatis paling sering terjadi setiap 10 menit sekali, kecuali jika pengguna login kembali dalam waktu 10 menit. RP harus memanggil navigator.credentials.preventSilentAccess() untuk secara eksplisit meminta browser menonaktifkan autentikasi ulang otomatis saat pengguna logout dari RP secara eksplisit, misalnya, dengan mengklik tombol logout.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
Pengguna dapat memilih untuk tidak mengaktifkan ulang otomatis di setelan
Pengguna dapat memilih untuk tidak menggunakan autentikasi ulang otomatis dari menu setelan:
- Di Chrome desktop, buka
chrome://password-manager/settings
> Login secara otomatis. - Di Android Chrome, buka Setelan > Pengelola Sandi > Ketuk roda gigi di pojok kanan atas > Login otomatis.
Dengan menonaktifkan tombol tersebut, pengguna dapat memilih untuk tidak ikut perilaku autentikasi ulang otomatis. Setelan ini disimpan dan disinkronkan di seluruh perangkat, jika pengguna login ke Akun Google di instance Chrome dan sinkronisasi diaktifkan.
Berikan masukan
Jika Anda menguji FedCM, Anda dapat memberikan masukan atau masalah apa pun yang Anda alami di crbug.com di bagian komponen "Blink>Identity>FedCM".
Foto oleh Noah Samuel Franz di Unsplash