Panduan developer kunci sandi untuk pihak tepercaya

Pelajari cara mengintegrasikan kunci sandi ke dalam layanan Anda.

Anatomi sistem kunci sandi

Sistem kunci sandi terdiri dari beberapa komponen:

  • Pihak tepercaya: Dalam konteks kunci sandi, pihak tepercaya (RP) menangani penerbitan dan autentikasi kunci sandi. RP harus mengoperasikan klien — situs atau aplikasi yang membuat kunci sandi atau melakukan autentikasi dengan kunci sandi — dan server untuk mendaftarkan, menyimpan, dan memverifikasi kredensial yang dibuat oleh kunci sandi di klien. Aplikasi seluler kunci sandi harus terikat ke domain server RP menggunakan mekanisme asosiasi yang disediakan OS seperti Digital Asset Links.
  • Authenticator: Perangkat komputasi seperti ponsel, tablet, laptop, atau komputer desktop yang dapat membuat dan memverifikasi kunci sandi menggunakan fitur kunci layar yang ditawarkan oleh sistem operasi.
  • Pengelola sandi: Software yang diinstal di perangkat pengguna akhir yang menayangkan, menyimpan, dan menyinkronkan kunci sandi, seperti Pengelola Sandi Google.

Alur pendaftaran

Gunakan WebAuthn API di situs atau library Credential Manager di aplikasi Android untuk membuat dan mendaftarkan kunci sandi baru.

Untuk membuat kunci sandi baru, ada beberapa komponen utama yang harus diberikan:

  • ID RP: Berikan ID pihak tepercaya dalam bentuk domain web.
  • Informasi pengguna: ID pengguna, nama pengguna, dan nama tampilan.
  • Kredensial yang akan dikecualikan: Informasi tentang kunci sandi yang disimpan sebelumnya untuk mencegah pendaftaran duplikat.
  • Jenis kunci sandi: Apakah akan menggunakan perangkat itu sendiri ("pengautentikasi platform") sebagai pengautentikasi, atau kunci keamanan yang dapat dilepas ("pengautentikasi lintas platform / roaming"). Selain itu, pemanggil dapat menentukan apakah akan membuat kredensial dapat ditemukan sehingga pengguna dapat memilih akun untuk login.

Setelah RP meminta pembuatan kunci sandi dan pengguna memverifikasinya dengan buka kunci layar, kunci sandi baru akan dibuat dan kredensial kunci publik akan ditampilkan. Kirim kunci publik tersebut ke server dan simpan ID kredensial serta kunci publik untuk autentikasi pada masa mendatang.

Alur pendaftaran

Pelajari cara membuat dan mendaftarkan kunci sandi secara mendetail:

Alur autentikasi

Gunakan WebAuthn API di situs atau library Credential Manager di aplikasi Android untuk melakukan autentikasi dengan kunci sandi terdaftar.

Untuk melakukan autentikasi dengan kunci sandi, ada beberapa komponen utama yang harus disediakan:

  • ID RP: Berikan ID pihak tepercaya dalam bentuk domain web.
  • Challenge: Challenge yang dibuat server untuk mencegah serangan replay.

Setelah RP meminta autentikasi dengan kunci sandi dan pengguna memverifikasinya dengan buka kunci layar, kredensial kunci publik akan ditampilkan. Kirimkan ke server dan verifikasi tanda tangan dengan kunci publik yang disimpan.

Alur autentikasi

Pelajari cara melakukan autentikasi dengan kunci sandi secara mendetail:

Integrasi sisi server

Setelah membuat kunci sandi, server perlu memberikan parameter utama seperti tantangan, informasi pengguna, ID kredensial yang akan dikecualikan, dan lainnya. Kemudian, server akan memverifikasi kredensial kunci publik yang dibuat dan dikirim dari klien, lalu menyimpan kunci publik di database. Untuk melakukan autentikasi dengan kunci sandi, server perlu memvalidasi kredensial dengan cermat dan memverifikasi tanda tangan agar pengguna dapat login.

Pelajari lebih lanjut di panduan sisi server kami:

Mekanisme autentikasi yang ada (lama)

Saat Anda mendukung kunci sandi di layanan yang sudah ada, transisi dari mekanisme autentikasi yang lebih lama seperti sandi ke kunci sandi tidak akan terjadi dalam sehari. Kami tahu Anda cenderung ingin menghilangkan metode autentikasi yang lebih lemah sesegera mungkin, tetapi hal itu dapat menyebabkan kebingungan bagi pengguna atau membuat beberapa pengguna tertinggal. Sebaiknya tetap gunakan metode autentikasi yang ada untuk saat ini.

Ada beberapa alasan:

  • Ada pengguna di lingkungan yang tidak kompatibel dengan kunci sandi: Dukungan kunci sandi diperluas secara luas di berbagai sistem operasi dan browser, tetapi pengguna yang menggunakan versi lama belum dapat menggunakan kunci sandi.
  • Ekosistem kunci sandi belum matang: Ekosistem kunci sandi terus berkembang. Detail UX dan kompatibilitas teknis antara lingkungan yang berbeda dapat ditingkatkan.
  • Pengguna mungkin belum siap menggunakan kunci sandi: Ada orang yang enggan mencoba hal baru. Seiring berkembangnya ekosistem kunci sandi, mereka akan memahami cara kerja kunci sandi dan alasan penggunaannya bermanfaat bagi mereka.

Meninjau kembali mekanisme autentikasi yang ada

Meskipun kunci sandi membuat autentikasi Anda lebih sederhana dan aman, mempertahankan mekanisme lama sama seperti membiarkan celah. Sebaiknya tinjau dan tingkatkan mekanisme autentikasi yang ada.

Sandi

Membuat sandi yang kuat dan mengelolanya untuk setiap situs adalah tugas yang sulit bagi pengguna. Sebaiknya gunakan pengelola sandi bawaan sistem atau pengelola sandi mandiri. Dengan melakukan sedikit perubahan pada formulir login, situs dan aplikasi dapat membuat perbedaan besar pada keamanan dan pengalaman loginnya. Lihat cara Anda dapat melakukan perubahan tersebut:

Autentikasi 2 langkah

Meskipun menggunakan pengelola sandi membantu pengguna menangani sandi, tidak semua pengguna menggunakannya. Meminta kredensial tambahan yang disebut sandi sekali pakai (OTP) adalah praktik umum untuk melindungi pengguna tersebut. OTP biasanya diberikan melalui email, pesan SMS, atau aplikasi autentikator seperti Google Authenticator. Karena OTP biasanya berupa teks singkat yang dibuat secara dinamis dan hanya berlaku dalam jangka waktu terbatas, hal ini menurunkan kemungkinan pembajakan akun. Metode ini tidak sekuat kunci sandi, tetapi jauh lebih baik daripada hanya memberikan sandi kepada pengguna.

Jika Anda memilih SMS sebagai cara untuk mengirimkan OTP, lihat praktik terbaik berikut untuk menyederhanakan pengalaman pengguna dalam memasukkan OTP.

Penggabungan identitas

Federasi identitas adalah opsi lain untuk memungkinkan pengguna login dengan aman dan mudah. Dengan federasi identitas, situs dan aplikasi dapat mengizinkan pengguna login menggunakan identitas pengguna dari penyedia identitas pihak ketiga. Misalnya, Login dengan Google memberikan konversi yang sangat baik bagi developer, dan pengguna merasa lebih mudah dan lebih memilih autentikasi berbasis sandi. Penggabungan identitas melengkapi kunci sandi. Cara ini sangat bagus untuk mendaftar karena situs atau aplikasi dapat memperoleh informasi profil dasar pengguna dalam satu langkah, sementara kunci sandi sangat bagus untuk menyederhanakan autentikasi ulang.

Perlu diingat bahwa setelah Chrome menghentikan penggunaan cookie pihak ketiga pada tahun 2024, beberapa sistem federasi identitas mungkin terpengaruh, bergantung pada cara pembuatannya. Untuk mengurangi dampaknya, API browser baru yang disebut Federated Credential Management API (FedCM singkatnya) sedang dikembangkan. Jika Anda menjalankan penyedia identitas, lihat detailnya dan tentukan apakah Anda perlu mengadopsi FedCM.

Login dengan link ajaib adalah metode autentikasi saat layanan mengirimkan link login melalui email sehingga pengguna dapat mengkliknya untuk mengautentikasi diri mereka sendiri. Meskipun hal ini membantu pengguna login tanpa mengingat sandi, beralih antara browser/aplikasi dan klien email akan menimbulkan hambatan. Selain itu, karena mekanisme autentikasi mengandalkan email, keamanan penyedia email yang lemah dapat membahayakan akun pengguna.

Referensi pembelajaran

Web

Untuk mengintegrasikan kunci sandi ke situs Anda, gunakan Web Authentication API (WebAuthn). Untuk mempelajari lebih lanjut, lihat referensi berikut:

Android

Untuk mengintegrasikan kunci sandi ke aplikasi Android Anda, gunakan library Credential Manager. Untuk mempelajari lebih lanjut, lihat referensi berikut:

UX

Pelajari rekomendasi pengalaman pengguna kunci sandi: