سنتاً، برنامه ها به صورت مونولیتیک ساخته می شدند، به این معنی که یک سیستم بزرگ و واحد پشتیبانی، اجزای مختلف از جمله احراز هویت را انجام می داد. این روش با وجود سادگی در توسعه و استقرار، چالش های قابل توجهی در مقیاس پذیری و مدیریت ایجاد می کند، به ویژه هنگامی که پایگاه کاربران افزایش می یابد.
در یک سیستم مونولیتیک، احراز هویت کاربر معمولاً از طریق جلسات(Sessions) انجام می شود. یک کاربر وارد می شود، سیستم اعتبار او را در برابر پایگاه داده بررسی می کند، یک جلسه ایجاد می کند و یک شناسه جلسه برمی گرداند، معمولاً به صورت کوکی. درخواست های بعدی این شناسه جلسه را شامل می شوند، که امکان بازیابی جلسه کاربر و انجام اقدامات لازم را فراهم می کند. اگرچه این روش مؤثر است، اما حالت دار است و نیاز به آگاهی گسترده پشتیبانی سرور از جلسات دارد. این حالت داری منجر به پیچیدگی هایی در مقیاس پذیری می شود، زیرا مدیریت تعداد زیادی از جلسات به تدریج پیچیده تر می شود.
معماری میکروسرویس برنامه را به سرویس های کوچکتر و مستقل تقسیم می کند، هر یک با پایگاه داده خود. این جداسازی به چالش های مقیاس پذیری پاسخ می دهد و انعطاف پذیری بیشتری در توسعه و استقرار فراهم می کند. در مثال برایان، یک برنامه ساده به یک API کاربر و یک API کارهای روزانه تقسیم شده است، هر کدام با پایگاه های داده جداگانه برای کاربران و کارهای روزانه.
در میکروسرویس ها، احراز هویت بدون حالت اهمیت بسیاری دارد. برایان از توکن های وب JSON (JWTs) به عنوان یک راه حل استفاده می کند. JWTs توکن های فشرده و ایمن URL هستند که شامل اشیاء JSON رمزگذاری شده هستند، شامل ادعاها درباره یک نهاد، معمولاً یک کاربر. آن ها از سه بخش تشکیل شده اند: یک سرآیند، یک بار محتوا و یک امضا. سرآیند نوع توکن و الگوریتم امضا را مشخص می کند، بار محتوا شامل ادعاها (مانند شناسه کاربر، نقش ها، صادرکننده، زمان انقضا) است و امضا برای تأیید اصالت و یکپارچگی توکن استفاده می شود.
JWTs مزایای زیادی دارند زیرا آن ها خودکفا هستند، حامل تمام اطلاعات لازم درباره کاربر. این امر نیاز به ذخیره سازی جلسه در سمت سرور را حذف می کند، بار سرور را کاهش داده و مقیاس پذیری را تسهیل می کند. JWTs می توانند با استفاده از یک رمز مشترک (با الگوریتم HMAC) یا یک جفت کلید عمومی/خصوصی (با RSA) امضا شوند.
در حالی که JWTs مزایای بسیاری دارند، آن ها نیز مسائل امنیتی را به همراه دارند. برایان بر اهمیت مدیریت امن توکن ها تأکید می کند، به ویژه برای توکن های تازه سازی که می توانند عمر طولانی تری داشته باشند و اجازه دهند کاربران توکن های دسترسی جدیدی تولید کنند. اگر توکن تازه سازی مورد سوءاستفاده قرار گیرد، می تواند یک آسیب پذیری امنیتی قابل توجه باشد.
برایان به بررسی استفاده های امنیتی متداول JWT و راه حل های آن ها می پردازد. یکی از این استفاده ها الگوریتم "هیچ" است که در آن مهاجم می تواند سرآیند توکن را تغییر دهد تا از تأیید امضا جلوگیری کند. راه حل ساده است: اجازه ندهید که "هیچ" به عنوان یک الگوریتم امضای معتبر باشد. یکی دیگر از استفاده های احتمالی شامل دستکاری سیستم مدیریت کلید است، به ویژه در سناریوهایی که سیستم ممکن است یک کلید عمومی را با یک رمز مشترک اشتباه بگیرد. راه حل در اینجا واضح است: اطمینان حاصل کنید که پروتکل های مدیریت کلید سخت گیرانه ای دارید.
لغو توکن در یک سیستم بدون حالت چالش هایی را ایجاد می کند، زیرا JWTs در سمت سرور ذخیره نمی شوند. برایان روشی را پیشنهاد می کند که شامل لغو توکن ها بر اساس زمان است، جایی که لغو توکن تازه سازی منجر به باطل شدن توکن های دسترسی صادر شده پس از یک نقطه خاص می شود. این روش به ردیابی زمان لغو توکن تازه سازی و مقایسه آن با زمان های انقضای توکن های دسترسی موجود متکی است.
برای خارج کردن کاربران، مهم است تا توکن های تازه سازی آن ها را لغو کنید. این از تولید توکن های دسترسی جدید جلوگیری می کند، به طور مؤثر کاربر را خارج می کند. برایان توصیه می کند که عملکرد خروج گسترده ای را پیاده سازی کنید، به ویژه در موارد نقض امنیتی، تا اطمینان حاصل شود که همه کاربران خارج شده اند و برای دسترسی بیشتر به توکن های جدید نیاز دارند.
در یک محیط میکروسرویس، حذف یک کاربر پیچیدگی بیشتری دارد به دلیل طبیعت جدا شده سرویس ها. در مدل مونولیتیک، حذف یک کاربر می تواند به طور خودکار به داده های مرتبط (مانند کارهای روزانه) منتقل شود. در میکروسرویس ها، این ارتباط وجود ندارد. برایان راه حل هایی مانند سیستم های حذف جهانی یا مکانیزم های مبتنی بر رویداد را پیشنهاد می کند، جایی که یک رویداد حذف کاربر اقداماتی را در تمام میکروسرویس های مرتبط فعال می کند.
سخنرانی برایان تکامل سیستم های احراز هویت را از معماری مونولیتیک به میکروسرویس ها برجسته می کند، با تأکید بر تغییر از مکانیزم های احراز هویت حالت دار به بدون حالت. توکن های وب JSON (JWTs) در این چشم انداز به عنوان ابزاری قدرتمند برجسته هستند که هم راحتی و هم کارآمدی را ارائه می دهند. با این حال، پیاده سازی آن ها نیازمند توجه دقیق به جنبه های امنیتی است، از مدیریت توکن تا مکانیزم های لغو توکن. گرایش به سمت میکروسرویس ها و JWTs نشان دهنده یک روند گسترده تر در معماری نرم افزار است، با اولویت بندی مقیاس پذیری، امنیت و کارآمدی در مدیریت احراز هویت و مدیریت کاربران.