Apa perbedaan Digest Authentication dengan Basic Authentication selain dari mengirim kredensial sebagai teks biasa?
Apa perbedaan Digest Authentication dengan Basic Authentication selain dari mengirim kredensial sebagai teks biasa?
Jawaban:
Perbedaan utamanya adalah tidak perlu mengirimkan nama pengguna dan kata sandi melalui kawat dalam teks biasa. Ia juga kebal terhadap serangan ulang, karena menggunakan nomor satu kali dari server.
Server memberi klien nomor sekali pakai (nonce) yang digabungkan dengan nama pengguna, bidang, sandi, dan permintaan URI. Klien menjalankan semua bidang tersebut melalui metode hashing MD5 untuk menghasilkan kunci hash.
Ia mengirimkan kunci hash ini ke server bersama dengan nama pengguna dan ranah untuk mencoba mengotentikasi.
Di sisi server, metode yang sama digunakan untuk menghasilkan hashkey, hanya saja alih-alih menggunakan kata sandi yang diketikkan ke browser, server mencari kata sandi yang diharapkan untuk pengguna dari DB penggunanya. Itu mencari kata sandi yang disimpan untuk nama pengguna ini, berjalan melalui algoritma yang sama dan membandingkannya dengan apa yang dikirim klien. Jika cocok maka akses diberikan, jika tidak maka dapat mengirim kembali 401 Unauthorized (tidak ada login atau login gagal) atau 403 Forbidden (akses ditolak).
Otentikasi intisari distandarisasi di RFC2617 . Ada gambaran bagus tentang itu di Wikipedia :
Anda bisa memikirkannya seperti ini:
Hash kredensial dikirim melalui kawat.
HA1 = MD5(username:realm:password)
Wikipedia memiliki artikel yang sangat bagus tentang topik ini
Satu-satunya cara untuk mendapatkan hash HA1 dari kredensial adalah dengan mengetahui kata sandinya. Server mengetahui HA1 tetapi bukan kata sandi yang membuatnya. Jika HA1 diketahui oleh penyerang, ia bisa masuk ke sistem. Jadi tidak dikirim ke kabel. Hash lebih lanjut berdasarkan nonce, dll. Dilakukan sebelum melakukan ini, dan ini harus sesuai dengan perhitungan serupa yang dilakukan di server. Jadi, selama server merahasiakan HA1, sistem aman.