apa itu nodejs jwt

青灯夜游
青灯夜游asal
2021-11-23 16:52:542903semak imbas

Dalam nodejs, nama penuh jwt ialah token web Json, yang merupakan standard terbuka berdasarkan JSON yang dilaksanakan untuk memindahkan pernyataan antara persekitaran aplikasi rangkaian. Tuntutan JWT biasanya digunakan untuk menghantar maklumat identiti pengguna yang disahkan antara pembekal identiti dan penyedia perkhidmatan untuk mendapatkan sumber daripada pelayan sumber.

apa itu nodejs jwt

Persekitaran pengendalian tutorial ini: sistem Windows 7, nodejs versi 12.19.0, komputer DELL G3.

Apakah itu JWT dalam nodejs

Token web Json (JWT) ialah sejenis pelaksanaan yang digunakan untuk memindahkan tuntutan antara persekitaran aplikasi rangkaian Standard terbuka berdasarkan JSON (RFC 7519 Token ini direka bentuk untuk padat dan selamat, terutamanya sesuai untuk senario log masuk tunggal (SSO) pada tapak yang diedarkan

Tuntutan JWT biasanya digunakan dalam The authenticated maklumat identiti pengguna dihantar antara pembekal identiti dan penyedia perkhidmatan untuk mendapatkan sumber daripada pelayan sumber, dan beberapa maklumat pengisytiharan tambahan yang diperlukan untuk logik perniagaan lain juga boleh ditambah Token juga boleh digunakan secara langsung untuk pengesahan, atau Boleh disulitkan

JWT, melakukan pengesahan identiti semasa komunikasi HTTP

Kami tahu bahawa komunikasi HTTP adalah tanpa kewarganegaraan, jadi permintaan pelanggan diproses, ia tidak boleh dikembalikan kepada klien asal Oleh itu, klien yang diakses perlu dikenal pasti Kaedah biasa adalah melalui mekanisme sesi: selepas klien berjaya log masuk ke pelayan, pelayan akan menjana sessionID dan mengembalikannya. Kepada klien, klien menyimpan ID sesi dalam kuki Apabila membuat permintaan semula, ia membawa ID sesi dalam kuki ke pelayan Pelayan akan cache sesi (sesi). akan mengetahui Pengguna mana yang membuat permintaan, dan mengembalikan hasil pemprosesan kepada pelanggan untuk melengkapkan komunikasi

Melalui analisis di atas, kita dapat mengetahui bahawa sesi tersebut mempunyai masalah berikut:

1. Sesi disimpan pada pelayan , apabila bilangan lawatan pelanggan meningkat, pelayan perlu menyimpan sejumlah besar sesi, yang meletakkan ujian hebat pada pelayan cluster, dan pengguna log masuk ke salah satu pelayan, pelayan akan Sesi disimpan dalam memori pelayan, tetapi apabila pengguna mengakses pelayan lain, ia akan menjadi tidak boleh diakses Teknologi konsistensi cache biasanya digunakan untuk memastikan bahawa ia boleh dikongsi, atau cache pihak ketiga digunakan untuk menyimpan sesi, yang menyusahkan

Bagaimanakah Json Web Token dibuat? 1. Pelayan log masuk ke pelayan melalui nama pengguna dan kata laluan; >4. Pelanggan menyimpan token ke penyemak imbas tempatan, biasanya dalam kuki ; pelayan menerima permintaan, ia mula-mula mengesahkan Token dan kemudian mengembalikan data Pelayan tidak perlu menyimpan Token, hanya maklumat yang dibawa dalam Token perlu disahkan 🎜>Tidak kira pelayan mana yang diakses pelanggan di latar belakang, asalkan maklumat pengguna boleh disahkan.

Apakah rupa Json Web Token?

Seperti yang anda lihat dari namanya, ia adalah json.

terdiri daripada tiga bahagian:

pengepala (pengepala Umumnya, anda hanya boleh menggunakan yang lalai dengan sedikit perubahan:

(muatan main). , Semuanya dipasang di sini Kandungan lalai ialah:

Pengguna boleh mentakrifkannya mengikut keperluan mereka Kandungan yang dihantar dalam Token biasanya akan memasukkan nama pengguna, peranan dan maklumat lain Token itu. (tandatangan), selepas dua bahagian pertama ditukar kepada rentetan, gunakan pengekodan base64, dan kemudian enkripsi untuk mendapatkan rentetan.

Token = tajuk (base64) muatan (base64) tandatangan;

–> Pengguna log masuk, pelayan menjana token (rentetan yang disulitkan) dan menghantarnya ke hujung hadapan,

–> token (simpan di mana sahaja anda mahu)
{
 ‘typ’:‘JWT’,
 ‘alg’:‘HS256’
 }

–> Apabila bahagian hadapan memulakan permintaan data, ia membawa token

–> , meneruskan operasi jika ia sah dan menamatkan operasi jika ia menyalahi undang-undang
{
 ‘iss’:‘签发者’,
 ‘sub’:‘面向的用户’,
 ‘aud’:‘接收方’,
 ‘exp’: 过期时间,
 ‘iat’: 创建时间,
 ‘nbf’: 在什么时间之前,该Token不可用,
 ‘jti’:‘Token唯一标识’
 }

token Senario penggunaan: permintaan tanpa kewarganegaraan, mengekalkan status log masuk pengguna, log masuk pihak ketiga (token auth2.0)

Algoritma sokongan


alg参数值 数字签名或MAC算法
HS256 使用SHA-256哈希算法的HMAC
HS384 使用SHA-384哈希算法的HMAC
HS512 使用SHA-512哈希算法的HMAC
RS256 使用SHA-256哈希算法的RSASSA-PKCS1-v1_5
RS384 使用SHA-384哈希算法的RSASSA-PKCS1-v1_5
RS512 使用SHA-512哈希算法的RSASSA-PKCS1-v1_5
PS256 使用SHA-256哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
PS384 使用SHA-384哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
PS512 使用SHA-512哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0)
ES256 使用P-256曲线和SHA-256哈希算法的ECDSA
ES384 使用P-384曲线和SHA-384哈希算法的ECDSA
ES512 使用P-521曲线和SHA-512哈希算法的ECDSA
没有 不包含数字签名或MAC值

开发时使用

安装

npm install jsonwebtoken --save

使用

const jwt = require('jsonwebtoken');//加载包
//产生token默认算法hs256
let token=jwt.sign({user:'123'},'123114655sad46aa');//此方法接收两个参数,第一个是要加密保存的数据(一个对象,不要放隐秘性的数据,如密码),第二个是要加密的私钥(一个字符串,越乱越好)
console.log(token);//返回一个加密字符串
// 服务器签发的token
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTIzIiwiaWF0IjoxNTcwMDc2NjU5fQ.3FT6v8zVptdWGBILD1m1CRY6sCP1I3E947krUh_E3



//客户端请求数据的时候验证token
//客户端传递过来的token
let tokens=token;

jwt.verify(tokens,'123114655sad46aa',function (err,data) {
    //verify接收两个参数,第一个参数是客户端传递过来的token,第二个参数是加密时的私钥;第三个参数是回调函数
    console.log(err);//签名通过返回null,签名不通过返回err(JsonWebTokenError: invalid signature)	
    console.log(data);//	通过返回解密数据,失败返回unfinished
});

更多node相关知识,请访问:nodejs 教程!!

Atas ialah kandungan terperinci apa itu nodejs jwt. 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