Rumah >hujung hadapan web >tutorial js >Pengesahan HTTP di Node.js

Pengesahan HTTP di Node.js

Jennifer Aniston
Jennifer Anistonasal
2025-02-25 15:32:08146semak imbas

HTTP Authentication in Node.js

Minggu lepas, dalam artikel "Mencipta Node.js HTTP Server", saya memperkenalkan asas -asas HTTP dalam Node.js. Artikel hari ini akan menunjukkan kepada anda cara menggunakan pengesahan HTTP untuk melindungi tapak Node.js anda dari serangan kata laluan. Kami akan mula memperkenalkan pengesahan akses asas dan kemudian bergerak ke pengesahan akses yang lebih selamat.

mata utama

    Pengesahan Akses Asas dan Pengesahan Akses Digest adalah dua kaedah pengesahan HTTP di Node.Js. Pengesahan akses asas adalah lebih mudah dan mendorong pengguna untuk nama pengguna dan kata laluan, sementara pengesahan akses dicerna lebih selamat kerana ia menyulitkan kata laluan sebelum penghantaran.
  • utiliti node.js
  • digunakan untuk menguruskan fail kata laluan dalam pengesahan akses asas, manakala htpasswd utiliti digunakan untuk mencerna pengesahan akses. Kata laluan disimpan dalam fail kata laluan di sebelah pelayan, dan modul htdigest digunakan untuk menambah sokongan pengesahan ke pelayan HTTP. http-auth
  • Menggunakan pengesahan HTTP sahaja tidak mencukupi untuk memastikan keselamatan aplikasi Node.js anda. Untuk keselamatan yang lebih baik, ia harus disampaikan melalui HTTPS. Express.js boleh digunakan untuk melaksanakan pengesahan HTTP dalam node.js dan gunakan middleware
  • . express-basic-auth

Pengesahan Akses Asas

Apabila pengguna mengakses tapak yang melaksanakan pengesahan, sistem itu akan mendorongnya memasuki nama pengguna dan kata laluannya. Jika pengguna menyediakan kelayakan yang sah, mereka akan dibawa ke kandungan halaman, jika tidak, mereka akan dinafikan dengan respons "401 tanpa izin". Jenis pengesahan HTTP yang paling mudah adalah pengesahan akses asas.

Fail Kata Laluan

Di sebelah pelayan, semua nama pengguna dan kata laluan yang disulitkan disimpan dalam fail kata laluan. Utiliti Node.js

boleh digunakan untuk menguruskan fail kata laluan. Untuk memasang htpasswd, gunakan arahan berikut. htpasswd bermaksud Pengurus Pakej Node.js, yang dipasang secara lalai dengan Node.js. npm digunakan untuk memasang modul Node.js. npm bendera pakej pemasangan global, yang bermaksud ia termasuk dalam pembolehubah laluan sistem. -g

<code class="language-bash">npm install -g htpasswd</code>
Selepas memasang

, anda boleh membuat pengguna baru menggunakan arahan berikut. Contoh ini menggunakan bendera htpasswd untuk membuat fail kata laluan baru bernama "HtPasswd". Dalam fail baru, tambahkan pengguna bernama "Foo". Bendera -c membolehkan kata laluan "bar" ditentukan sebagai sebahagian daripada baris arahan. -b

<code class="language-bash">htpasswd -bc htpasswd foo bar</code>
Selepas menjalankan arahan, buka fail "htpasswd" anda. Entri fail kata laluan untuk pengguna "foo" ditunjukkan di bawah. Barisan ini mengandungi nama pengguna dan kata laluan yang disulitkan. Oleh kerana ini adalah pengguna pertama dan satu -satunya dalam fail, ini harus menjadi satu -satunya baris dalam fail.

<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
integrasi node.js

Langkah seterusnya ialah menambah sokongan pengesahan ke pelayan HTTP kami. Pertama, anda perlu memasang modul

menggunakan arahan NPM berikut. http-auth

<code class="language-bash">npm install -g htpasswd</code>

Seterusnya, buat fail baru yang dipanggil "Basic_auth_Server.js" dan tambahkan kod berikut. Perhatikan bahawa modul http-auth dirujuk dalam baris 2. Dalam baris 3 hingga 7, lulus objek konfigurasi ke modul pengesahan. Bidang authRealm mentakrifkan alam pengesahan. Medan authFile menunjuk ke fail kata laluan yang kami buat sebelum ini. __dirname merujuk kepada direktori di mana skrip yang sedang dilaksanakan terletak. Contoh ini mengandaikan bahawa fail "HtPasswd" berada dalam direktori yang sama seperti "Basic_auth_server.js". Bidang konfigurasi authType menunjukkan jenis pengesahan untuk digunakan. Dalam baris 9, skim pengesahan asas digunakan untuk sambungan HTTP. Fungsi panggil balik pengesahan menyediakan nama pengguna yang disahkan untuk pemprosesan selanjutnya.

<code class="language-bash">htpasswd -bc htpasswd foo bar</code>

Akhirnya, mulakan pelayan. Anda boleh menyambung ke pelayan dengan menavigasi ke https://www.php.cn/link/bb122c8fe6c764e8aaa5555e2186a6344 . Anda akan diminta memasukkan nama pengguna dan kata laluan anda. Sediakan kelayakan yang anda buat sebelum ini dan penyemak imbas akan menyapa anda dengan nama.

Had

Kelemahan terbesar pengesahan akses asas adalah bahawa kelayakan dihantar melalui rangkaian sebagai teks biasa. Untuk mengelakkan eavesdropping, pengesahan tersebut hanya boleh digunakan dengan sambungan selamat (iaitu HTTPS). Sekiranya sambungan selamat tidak tersedia, anda harus menggunakan bentuk pengesahan yang lebih selamat.

Dissue Access Authentication

Pengesahan Akses Digital adalah alternatif yang lebih selamat untuk pengesahan asas. Dengan Pengesahan Digest, kata laluan disulitkan sebelum rangkaian dihantar.

Fail Kata Laluan

Pengesahan digit juga menggunakan fail kata laluan. Walau bagaimanapun, format fail sedikit berbeza daripada yang digunakan dalam pengesahan asas. Untuk menggunakan format fail kata laluan yang dicerna, kami akan menggunakan utiliti yang berbeza yang dipanggil

. Gunakan arahan NPM berikut untuk memasang htdigest. htdigest

<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
Seterusnya, gunakan arahan berikut untuk membuat fail kata laluan baru. Begitu juga, bendera

digunakan untuk membuat fail kata laluan baru bernama "HtPasswd". Kali ini kita juga perlu menentukan medan pengesahan. Dalam kes ini, medan pengesahan adalah "kawasan persendirian". Dalam contoh ini, nama pengguna sekali lagi "foo". Sila ambil perhatian bahawa kata laluan tidak disediakan dalam perintah. Setelah memasukkan arahan, anda akan diminta untuk memberikan kata laluan anda. -c

<code class="language-bash">npm install http-auth</code>
Selepas berlari

, periksa bahagian dalam fail "HtPasswd" yang baru. Kemasukan untuk "Foo" ditunjukkan di bawah. Fail pengesahan Digest mengandungi nama pengguna dan kata laluan yang disulitkan, serta alam pengesahan yang tidak termasuk dalam fail pengesahan asas. htdigest

<code class="language-bash">npm install -g htpasswd</code>

integrasi node.js

Untuk mengintegrasikan pengesahan pencerna ke dalam pelayan kami, kami akan menggunakan modul http-auth sekali lagi. Jika anda telah mengikuti tutorial ini, modul harus dipasang pada mesin anda. Seterusnya, buat fail baru yang dipanggil "Digest_auth_server.js" untuk melaksanakan pelayan anda. Kod pelayan ditunjukkan di bawah. Ambil perhatian bahawa kod pelayan hampir sama dengan kod pelayan pengesahan asas. Perbezaannya ialah bidang authType objek konfigurasi. Dalam kes ini, authType ditetapkan untuk "mencerna". Pelayan ini boleh diakses seperti pelayan pengesahan asas.

<code class="language-bash">htpasswd -bc htpasswd foo bar</code>

Kesimpulan

Artikel ini memperkenalkan asas -asas pengesahan HTTP. Dengan mengikuti contoh -contoh yang disediakan di sini, aplikasi Node.js anda boleh menjadi sedikit lebih selamat. Walau bagaimanapun, anda harus tahu bahawa pengesahan sahaja tidak mencukupi. Jika keselamatan adalah isu utama, laman web anda harus disampaikan melalui HTTPS. Dalam jawatan yang akan datang, saya akan meneroka HTTPS dan banyak lagi ciri -ciri Node.js yang hebat. Jika anda menyukai siaran ini, anda akan ingin mengetahui segala-galanya mengenai koleksi lompat cetakan dan e-book terkini SitePoint. Buku pertama ialah "Node.js" Don Nguyen - Ketahui lebih lanjut di Sitepoint!

(Berikut adalah bahagian FAQ. Oleh kerana panjang artikel, saya akan meringkaskan bahagian FAQ untuk mengekalkan maklumat teras dan mengelakkan pertindihan dan redundansi.)

FAQ (FAQ) Mengenai Pengesahan HTTP dalam Node.js

  • Bagaimana untuk melaksanakan pengesahan HTTP menggunakan express.js dalam node.js?

    Gunakan middleware. Kod sampel menunjukkan cara mengesahkan dengan nama pengguna dan kata laluan. express-basic-auth

  • Bagaimana untuk melindungi aplikasi Node.js saya menggunakan pengesahan HTTP?

    Gunakan modul dan tentukan laluan fail kata laluan. Pastikan anda menggunakan HTTPS untuk meningkatkan keselamatan. http-auth

  • Bagaimana menggunakan pengesahan HTTP untuk mengendalikan beberapa pengguna?

    Gunakan fail atau pangkalan data untuk menyimpan nama pengguna dan kata laluan. Modul menyokong fungsi ini. http-auth

  • Bagaimana untuk menyesuaikan arahan pengesahan HTTP dalam node.js?

    Tetapkan pilihan . realm

  • Bagaimana menangani kegagalan pengesahan dalam node.js?

    Pelayan akan menghantar respons 401 yang tidak dibenarkan. Anda boleh menyesuaikan respons ini.

  • Bagaimana menggunakan pengesahan HTTP dengan HTTPS?

    Buat pelayan HTTPS dan bukan pelayan HTTP.

  • Bagaimana menggunakan pengesahan HTTP dengan kuki?

    Tetapkan kuki selepas pengesahan yang berjaya.

  • Bagaimana menggunakan pengesahan HTTP dengan sesi?

    Gunakan sesi middleware, seperti .

  • Bagaimana menggunakan pengesahan HTTP dengan JSON Web Token (JWT)? Gunakan middleware JWT, contohnya express-jwt.

  • Bagaimana menggunakan pengesahan HTTP dengan OAuth? Gunakan OAuth Middleware, contohnya passport.

Singkatnya, di atas secara ringkas meringkaskan kandungan teras bahagian FAQ dan melakukan pemprosesan pseudo-asal pada teks asal. Semua pautan imej dibiarkan tidak berubah.

Atas ialah kandungan terperinci Pengesahan HTTP di Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn