TGViewer
DevTwitter | توییت برنامه نویسی DevTwitter | توییت برنامه نویسی @devtwitter · 32.2K subscribers
Post #13263 5.74K
ویژگی‌های مهم JWT (فارغ از فریم ورک)

JWT یک توکن امضاشده است که اطلاعات کاربر را درون خودش دارد.

نحوه کار: سرور توکن را می‌سازد و امضا می‌کند ← کلاینت آن را در هر درخواست می‌فرستد ← سرور فقط امضا را چک می‌کند (بدون دیتابیس).

نکته کلیدی: فقط Encode است، نه Encrypt ← داده حساس داخلش نگذارید.
------------------
ساختار: سه بخش با نقطه جدا می‌شوند

- Header:

-          نوع توکن و الگوریتم امضا

- Payload:

-          داده‌ها (Claims مثل شناسه کاربر، نقش، انقضا)

- Signature:

-          امضا برای تأیید دستکاری نشدن
------------------

آیا در میکروسرویس‌ها JWT بهتر است؟

بله، اغلب اوقات. چون Stateless است و هر سرویس بدون کوئری دیتابیس مرکزی می‌تواند توکن را تأیید کند.

بهترین کاربردها:

-         احراز هویت بین میکروسرویس‌ها

-         Machine-to-Machine (سرویس به سرویس)

-         APIهای عمومی و چند‌پلتفرمی

-         سیستم‌های توزیع‌شده و مقیاس‌پذیر

بدترین کاربردها:

-         نشست کاربران وب (Session جایگزین بهتری است)

-         وقتی نیاز به ابطال آنی توکن دارید (مثل logout یا تغییر رمز)

-         ذخیره داده حساس در Payload (رمزنگاری نشده)

-         توکن‌های طولانی‌مدت بدون Refresh Token

ویژگی‌های مهم JWT

Stateless
تمام اطلاعات لازم در خود توکن ذخیره می‌شود؛ سرور نیازی به ذخیره نشست ندارد.

Self-contained
شامل Header، Payload و Signature است و می‌تواند Claimهای سفارشی (نقش، مجوزها و...) را حمل کند.

امضاشده (Signed)
با الگوریتم‌های HMAC یا RSA امضا می‌شود؛ دستکاری محتوا قابل تشخیص است.

استاندارد باز (RFC 7519)
مستقل از زبان و پلتفرم است و در هر سیستم‌عاملی قابل استفاده است.

قابل حمل (Portable)
به راحتی بین سرویس‌ها، دامنه‌ها و میکروسرویس‌ها منتقل می‌شود.

دارای انقضا (Expiration)
فیلد exp زمان اعتبار توکن را مشخص می‌کند.

غیرقابل ابطال (Non-revocable)
تا زمان انقضا معتبر می‌ماند؛ ابطال آنی نیاز به Blocklist دارد که Stateless بودن را نقض می‌کند.

حجیم (Bulky)
به دلیل داشتن Payload، معمولاً بزرگ‌تر از توکن‌های ساده است.

رمزنگاری‌نشده (Base64 Encoded)
محتوای Payload فقط Encode شده، نه Encrypt؛ بنابراین نباید داده حساس در آن قرار داد.

آسیب‌پذیر در صورت لو رفتن
اگر توکن دزدیده شود، مهاجم تا زمان انقضا به آن دسترسی دارد.

@DevTwitter | <Max Shirinzad/>
  • ❤ 33
  • 🍌 12
  • 👍 5
More from @devtwitter
  1. Sep 27, 2026بوت‌کمپ های پاییز آنلیم شروع شد🍂🤩 امسال سه‌تا بوت‌کمپ داریم: 🔐 بوت‌کمپ هک 👨🏻‍💻بوت‌کم…
  2. Sep 27, 2026رده بندی محبوبیت زبانهای برنامه نویسی در سپتامبر 2026 تقدیم به نگاه شما عزیزان... این رده…
  3. Sep 27, 2026اگه از opencode یا هر harness دیگه ای استفاده میکنید، احتمال این که مدل LLM زرنگ بازی در ب…
  4. Sep 27, 2026یک چند وقت پیش یک مدل ساختم به اسم xiq مخصوصا پیدا کردن مشکلات اپتدایی امنیت کد. اگه توهم…
  5. Sep 26, 2026من از کودکی همیشه از کار با TUIها شگفت‌زده می‌شدم. این claude-cli هم همیشه برام جالب بوده…
  6. Sep 26, 2026این پروژه یه سرویس کامل برای راه‌اندازی Meet و Webinar. میتونی پلن های مختلف با محدودیت ها…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →