JWT untuk Pengesahan Tanpa Keadaan
Laksanakan JSON Web Token (JWT) untuk pengesahan tanpa keadaan dan urus sesi pengguna secara selamat.
JWT untuk Pengesahan Tanpa Keadaan ialah pelajaran Kem Intensif Pembangunan Backend Node.js percuma di CoddyKit. Ini ialah pelajaran 3 daripada 6. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif Pembangunan Backend Node.js, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 6 pelajaran.
Apakah JWT?
Dalam pelajaran ini, kita akan mendalami Token Web JSON (JWT). Token ini ialah cara yang padat dan selamat untuk URL bagi mewakili tuntutan yang akan dihantar antara dua pihak.
JWT penting untuk pengesahan tanpa keadaan. Ini bermakna pelayan tidak perlu menyimpan maklumat sesi. Sebaliknya, semua data pengguna yang diperlukan dibenamkan terus dalam token itu sendiri.
Struktur JWT: Tiga Bahagian
JWT terdiri daripada tiga bahagian berbeza yang dipisahkan oleh titik (.):
- Pengepala: Maklumat tentang token itu sendiri.
- Muatan: Data sebenar (tuntutan) yang ingin anda hantar.
- Tandatangan: Digunakan untuk mengesahkan bahawa token tidak diubah suai.
Strukturnya kelihatan seperti ini: xxxxx.yyyyy.zzzzz
Mendalami Pengepala & Muatan
Pengepala biasanya mengandungi dua bahagian:
alg: Algoritma yang digunakan untuk menandatangani (contohnya, HMAC SHA256 atau RSA).typ: Jenis token, yang biasanya ialah 'JWT'.
Muatan mengandungi 'tuntutan' – pernyataan tentang entiti (biasanya pengguna) dan data tambahan. Tuntutan yang biasa termasuk:
sub(subjek): ID pengguna.iss(penerbit): Pihak yang menerbitkan token.exp(masa tamat tempoh): Masa token tamat tempoh.
Penjelasan Tandatangan
Tandatangan ialah perkara yang menjadikan JWT selamat. Tandatangan dicipta dengan mengambil Pengepala yang dikodkan, Muatan yang dikodkan, kunci rahsia dan algoritma yang dinyatakan dalam pengepala, kemudian menandatangani semuanya.
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
Jika seseorang cuba mengubah pengepala atau muatan, pengesahan tandatangan akan gagal, yang menunjukkan bahawa token itu tidak sah atau telah diubah suai.
Gambaran Keseluruhan Aliran Kerja JWT
Beginilah cara JWT biasanya berfungsi dalam aliran pengesahan:
- Pengguna log masuk dengan bukti kelayakan.
- Pelayan mengesahkan bukti kelayakan dan mencipta JWT.
- Pelayan menghantar JWT kembali kepada klien.
- Klien menyimpan JWT (contohnya, dalam storan setempat atau kuki).
- Untuk permintaan seterusnya, klien menghantar JWT (biasanya dalam
Authorizationpengepala). - Pelayan mengesahkan tandatangan dan tempoh tamat JWT sebelum memproses permintaan.
Mencipta JWT dalam Node.js
Kita akan menggunakan pustaka jsonwebtoken yang popular. Mula-mula, pasangkannya dengan npm install jsonwebtoken.
Contoh ini menunjukkan cara menandatangani (mencipta) JWT baharu dengan muatan dan masa tamat tempoh. Ingat untuk memastikan secretKey anda sangat selamat!
const jwt = require('jsonwebtoken');
const payload = {
userId: 'user123',
username: 'coddykit'
};
// A strong, secret key. Keep this secure in a .env file!
const secretKey = 'your_super_secret_key_12345';
const token = jwt.sign(payload, secretKey, { expiresIn: '1h' });
console.log('Generated JWT:');
console.log(token);Mengesahkan JWT dalam Node.js
Selepas menerima JWT daripada klien, pelayan anda perlu mengesahkan kesahihannya. Kaedah jwt.verify() menyemak tandatangan dan tempoh tamat.
Jika token itu sah, kaedah ini mengembalikan muatan yang dinyahkod. Jika tidak, kaedah ini menghasilkan ralat (contohnya, TokenExpiredError atau JsonWebTokenError).
const jwt = require('jsonwebtoken');
// Replace with a valid token generated from the previous step
const tokenToVerify = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJ1c2VyMTIzIiwidXNlcm5hbWUiOiJjb2RkeWtpdCIsImlhdCI6MTY3ODg4NjQwMCwiZXhwIjoxNjc4ODkwMDAwfQ.SOME_RANDOM_SIGNATURE';
const secretKey = 'your_super_secret_key_12345';
try {
const decoded = jwt.verify(tokenToVerify, secretKey);
console.log('Token is valid!');
console.log('Decoded Payload:', decoded);
} catch (err) {
console.log('Token verification failed:');
console.log(err.message);
}Menyimpan JWT dengan Selamat
Tempat anda menyimpan JWT pada bahagian klien amat penting untuk keselamatan:
- Storan Setempat / Storan Sesi: Mudah digunakan, tetapi terdedah kepada serangan Penskripan Rentas Tapak (XSS) jika JavaScript berniat jahat boleh mengaksesnya.
- Kuki HttpOnly: Lebih selamat daripada XSS kerana JavaScript tidak boleh mengaksesnya. Walau bagaimanapun, kuki ini terdedah kepada Pemalsuan Permintaan Rentas Tapak (CSRF) jika tidak dilindungi dengan betul.
Selalunya, gabungan beberapa strategi atau pelaksanaan token CSRF yang teliti digunakan.
Token Akses berbanding Token Segar Semula
Untuk meningkatkan keselamatan, banyak aplikasi menggunakan dua jenis token:
- Token Akses: Jangka hayat pendek (contohnya, 15 minit hingga 1 jam), digunakan untuk panggilan API secara langsung. Jika dicuri, kegunaannya adalah terhad.
- Token Segar Semula: Jangka hayat panjang dan disimpan dengan selamat (contohnya, dalam kuki HttpOnly). Digunakan untuk mendapatkan token akses baharu selepas token semasa tamat tempoh, tanpa memerlukan pengguna log masuk semula.
Semakan Komponen JWT
Mari uji pemahaman anda tentang JWT dengan cepat!
JWT secara Ringkas
Anda telah berjaya mempelajari tentang Token Web JSON! Kami telah membincangkan:
- Maksud JWT dan peranannya dalam pengesahan tanpa keadaan.
- Tiga bahagian: Pengepala, Muatan dan Tandatangan.
- Cara mencipta dan mengesahkan JWT menggunakan Node.js.
- Pertimbangan penting untuk penyimpanan pada bahagian klien dan penggunaan token segar semula.
JWT ialah alat yang berkuasa untuk membina sistem pengesahan yang selamat dan boleh diskalakan dalam aplikasi Node.js anda!
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 92
Soalan Lazim
Adakah pelajaran “JWT untuk Pengesahan Tanpa Keadaan” percuma?
Ya — teks penuh “JWT untuk Pengesahan Tanpa Keadaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Kem Intensif Pembangunan Backend Node.js, tingkat taraf kepada CoddyKit PRO. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 6 pelajaran.
Apakah yang akan saya pelajari dalam “JWT untuk Pengesahan Tanpa Keadaan”?
Laksanakan JSON Web Token (JWT) untuk pengesahan tanpa keadaan dan urus sesi pengguna secara selamat. Anda berlatih Kem Intensif Pembangunan Backend Node.js menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif Pembangunan Backend Node.js?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif Pembangunan Backend Node.js di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 6.
Berapa lamakah pelajaran “JWT untuk Pengesahan Tanpa Keadaan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif Pembangunan Backend Node.js ini?
Ya. Setiap pelajaran Kem Intensif Pembangunan Backend Node.js menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pendaftaran dan Log Masuk Pengguna
- Penjanaan dan Pengesahan Token JWT
- JWT untuk Pengesahan Tanpa Keadaan
- Integrasi Aliran Kata Laluan OAuth2
- Kawalan Akses Berasaskan Peranan
- Kawalan Akses Berasaskan Peranan (RBAC)