JSON Web Token (JWT) چیست؟
JWT (JSON Web Token) یک استاندارد باز (RFC 7519) برای ایجاد توکنهای دسترسی است که به طور ایمن اطلاعات بین دو طرف (مانند کلاینت و سرور) را به صورت JSON رمزگذاری میکند. این توکنها معمولاً برای تأیید هویت و اعطای دسترسی به منابع مختلف استفاده میشوند.
اجزای JWT
JWT شامل سه بخش اصلی است که با نقطه (.
) از هم در جاوا اسکریپت جدا میشوند:
- Header (هدر)
- Payload (محتوا)
- Signature (امضا)
1. Header
هدر معمولاً شامل دو قسمت است: نوع توکن که همیشه “JWT” است و الگوریتم رمزنگاری مورد استفاده، مانند HMAC SHA256 یا RSA.
{
"alg": "HS256",
"typ": "JWT"
}
آیا میدانید مدرسه فرانت اند پرنیان، دوره طراحی سایت از صفر تا صد را بصورت حرفه ای برگزار میکند؟
2. Payload
محتوا شامل ادعاها (claims) است. ادعاها اطلاعاتی هستند که در مورد کاربر یا موضوعی که توکن برای آن صادر شده است، ارائه میدهند. سه نوع ادعا وجود دارد:
- Registered claims: ادعاهای استاندارد مانند
iss
(صادرکننده)،exp
(تاریخ انقضا)،sub
(موضوع) و غیره. - Public claims: ادعاهایی که به طور عمومی تعریف شدهاند.
- Private claims: ادعاهایی که بین دو طرف (مانند کلاینت و سرور) توافق شدهاند.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
3. Signature
برای ایجاد امضا، هدر و محتوا با هم ترکیب شده و با استفاده از الگوریتم مشخص شده در هدر و یک کلید مخفی امضا میشوند.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
ایجاد و استفاده از JWT در جاوا اسکریپت
ایجاد JWT
برای ایجاد JWT در جاوا اسکریپت، میتوان از کتابخانههای مختلفی مانند jsonwebtoken
استفاده کرد. در ادامه یک مثال از نحوه ایجاد JWT با استفاده از این کتابخانه آمده است:
- نصب
jsonwebtoken
:
npm install jsonwebtoken
- ایجاد یک JWT:
const jwt = require('jsonwebtoken');
// دادههایی که میخواهید در JWT ذخیره شوند
const payload = {
sub: '1234567890',
name: 'John Doe',
admin: true
};
// کلید مخفی برای امضا
const secret = 'your-256-bit-secret';
// ایجاد JWT
const token = jwt.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' });
console.log(token);
بررسی اعتبار JWT
برای بررسی اعتبار JWT، باید توکن را با استفاده از کلید مخفی و الگوریتم مشخص شده تأیید کرد. در ادامه یک مثال از نحوه بررسی اعتبار JWT آمده است:
const jwt = require('jsonwebtoken');
const token = 'your.jwt.token.here';
const secret = 'your-256-bit-secret';
jwt.verify(token, secret, (err, decoded) => {
if (err) {
console.log('توکن نامعتبر است', err);
} else {
console.log('توکن معتبر است', decoded);
}
});
استفاده از JWT در درخواستهای HTTP
JWT معمولاً در هدر درخواستهای HTTP به سرور ارسال میشود. به عنوان مثال، در درخواستهای HTTP با استفاده از fetch
:
const token = 'your.jwt.token.here';
fetch('https://api.example.com/protected', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
جمعبندی
JWT یک راهکار ایمن و کارآمد برای احراز هویت و دسترسی به منابع مختلف در برنامههای وب است. با استفاده از JWT، میتوانید به صورت ایمن اطلاعات کاربر را بین کلاینت و سرور منتقل کنید و دسترسی به منابع را مدیریت کنید. در این مقاله، اجزای JWT، نحوه ایجاد و بررسی اعتبار JWT در جاوا اسکریپت و استفاده از JWT در درخواستهای HTTP را بررسی کردیم.
امیدواریم از این مقاله JSON Web Token (JWT) چیست نهایت استفاده را برده باشید و آن را با دوستانتان به اشتراک بگذارید. تیم تولید محتوای مدرسه اینترنتی پرنیان این مقاله را تهیه کرده است.
درباره مدیریت
شما در حال مطالعه یکی از مقالات آموزشی وبلاگ پرنیان بودید. اگر برایتان مفید بود آن را با دوستانتان به اشتراک بگذارید. من پارسا قربانیان و اینجا مدرسه فرانت اند پرنیان، میخواهیم در یک معامله برد برد، با هم به آرزوهایمان برسیم..
نوشته های بیشتر از مدیریت
دیدگاهتان را بنویسید