satu. Tinjauan Sertifikasi Dasar
Selama proses komunikasi protokol HTTP, protokol HTTP mendefinisikan proses otentikasi dasar untuk memungkinkan server HTTP melakukan kartu ID pengguna di browser web. Ketika klien membuat permintaan data ke server HTTP, jika klien tidak diautentikasi, server HTTP akan memverifikasi nama pengguna dan kata sandi klien melalui proses otentikasi dasar untuk menentukan apakah pengguna legal. Setelah menerima permintaan otentikasi identitas server HTTP, klien akan meminta pengguna untuk memasukkan nama pengguna dan kata sandi, dan kemudian mengenkripsi nama pengguna dan kata sandi dengan base64. Ciphertext terenkripsi akan dilampirkan pada informasi permintaan. Misalnya, ketika nama pengguna adalah anjuta dan kata sandi adalah: 123456, klien menggabungkan nama pengguna dan kata sandi dengan ":", dan mengenkripsi string gabungan dengan base64 sebagai ciphertext, dan menambahkan ciphertext ke header permintaan setiap kali data diminta. Setelah setiap kali server HTTP menerima paket permintaan, ia memperoleh informasi pengguna yang dilampirkan pada klien (base64 nama pengguna dan kata sandi yang dienkripsi) sesuai dengan protokol, membuka paket paket permintaan, dan memverifikasi nama pengguna dan kata sandi. Jika nama pengguna dan kata sandi benar, ia mengembalikan data yang diperlukan oleh klien sesuai dengan permintaan klien; Kalau tidak, ia mengembalikan kode kesalahan atau mempertanyakan klien untuk memberikan nama pengguna dan kata sandi.
dua. Proses sertifikasi dasar
1. Klien meminta data dari server, dan konten yang diminta dapat berupa halaman web atau jenis MIME lainnya. Pada saat ini, dengan asumsi bahwa klien belum diverifikasi, klien memberikan permintaan berikut ke server:
Get /index.html http /1.0
Host: www.google.com
2. Server mengirimkan kode permintaan verifikasi 401 ke klien, dan data yang dikembalikan oleh server secara kasar sebagai berikut:
Http/1.0 401 tidak sah
Server: Sokevo/1.0
WWW-Authenticate: Basic Realm = "Google.com"
Tipe konten: teks/html
Panjang konten: xxx
3. Ketika klien sesuai dengan spesifikasi HTTP1.0 atau 1.1 (seperti IE, Firefox) menerima nilai pengembalian 401, jendela login akan secara otomatis muncul, mengharuskan pengguna untuk memasukkan nama pengguna dan kata sandi.
4. Setelah pengguna memasukkan nama pengguna dan kata sandi, nama pengguna dan kata sandi dienkripsi dalam enkripsi Base64, dan ciphertext ditempatkan dalam informasi permintaan sebelumnya. Informasi permintaan pertama yang dikirim oleh klien menjadi konten berikut:
Get /index.html http /1.0
Host: www.google.com
Otorisasi: dasar xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Catatan: xxxx .... mewakili nama pengguna dan kata sandi yang dienkripsi.
5. Setelah menerima informasi permintaan di atas, server mengambil dan mendekripsi informasi pengguna setelah bidang otorisasi, dan membandingkan dan memverifikasi nama pengguna dan kata sandi yang didekripsi dengan database pengguna. Jika nama pengguna dan kata sandi sudah benar, server akan mengirim sumber daya yang diminta ke klien sesuai dengan permintaan:
tiga. Kerugian sertifikasi dasar
Tujuan dari otentikasi dasar HTTP adalah untuk menyediakan fungsi otentikasi pengguna yang sederhana. Proses otentikasi sederhana dan jelas, dan cocok untuk sistem atau perangkat dengan persyaratan keamanan rendah. Misalnya, otentikasi halaman konfigurasi router yang digunakan oleh semua orang hampir selalu diadopsi. Kerugiannya adalah bahwa ia tidak memiliki strategi otentikasi yang fleksibel dan andal, seperti ketidakmampuan untuk menyediakan fungsi otentikasi domain (domain atau ranah). Selain itu, kekuatan enkripsi Base64 sangat rendah, yang hanya dapat mencegah pencarian Sohu dari mencarinya. Tentu saja, sistem otentikasi dasar HTTP juga dapat dikombinasikan dengan SSL atau Kerberos untuk mencapai sistem otentikasi dengan kinerja keamanan tinggi (relatif)
Empat. Kode Implementasi Java Bersertifikat Dasar
Httpsession sesi = request.getSession (); String user = (string) session.getAttribute ("user"); String pass; if (user == null) {coba {response.setcharacterencoding ("gbk"); Printwriter ut = response.getWriter (); String otorisasi = request.getHeader ("otorisasi"); if (otorisasi == null || otorisasi.equals ("")) {response.setStatus (401); response.setHeader ("www-autenticate", "ranah dasar =/" Harap masukkan kata sandi administrator/""); out.print ("Maaf karena tidak memiliki izin !!"); kembali; } String userAndPass = string baru (base64decoder baru (). DecodeBuffer (otorization.split ("" ") [1])); if (userandpass.split (": "). Panjang <2) {response.setstatus (401); response.setHeader (" www-authenticate "," "," PLAGRETOR/PLAGETORT ("WWW-Authenticate", "); out.print (maaf karena tidak memiliki izin !! "); Dispatcher. Ex.PrintStackTrace ();}} else {requestDispatcher Dispatcher = request.getRequestDispatcher ("index.jsp");Di atas adalah diskusi singkat tentang prinsip -prinsip dan metode implementasi HTTP menggunakan otentikasi dasar yang dibawa kepada Anda. Saya harap semua orang dapat mendukung wulin.com lebih banyak ~