احراز هویت یکپارچه(SSO) به عنوان بخشی از مدیریت هویت و دسترسی(IAM)

مقدمههمه‌ی ما عضوی از جامعه‌ی کاربران اینترنت هستیم و روزانه از اپلیکیشن‌ها و سایت‌های مختلفی استفاده می‌کنیم.اکثر این سایت‌ها برای این‌که خدمات مورد نظرمان را به ما ارائه دهند نیاز دارند تا ما را احراز هویت کنند.اگر به چند سال پیش برگردیم احتمالا یادمان هست که به ازای هر سایت و اپلیکیشنی که می‌خواستیم از آن استفاده کنیم یک حساب کاربری مجزا با نام کاربری و رمز عبور باید برای خودمان ایجاد می‌کردیم و پیشنهاد تمامی این سایت‌ها و اپلیکیشن‌ها انتخاب یک رمز قوی به این که رمز عبورمان حداقال ۸ کاراکتر داشته باشد و از حروف بزرگ و کوچک انگلیسی به همراه اعداد و علائم تشکیل شده باشد.از یک جایی به بعد دیگر رمز‌هایی که برای حساب‌های کاربری مختلفمان گذاشته‌بودیم فراموش می‌شدند و مدیریت آن‌ها خیلی دشوار می‌شد و احتمالا بارها بر روی گزینه‌ی فراموشی رمز عبور کلیک می‌کردیم و رمز جدیدی می‌اشتمی که احتمالا ساده تر از رمز قبلی‌مان بود تا راحت تر بتوانیم آن را به یاد بیاوریم؛اما خوب زهی خیال باطل:) باز هم همین دور باطل را طی می‌کردیم تا رمز فراموش شده‌مان را تغییر دهیم.البته این مشکل فقط در سطح اینترنت و شبکه‌ی جهانی نبوده و نیست!خیلی از شرکت‌ها در شبکه‌ی داخلی خودشان نیاز به احراز هویت کارمندانشان دارند تا کارمندان بتوانند از سرویس‌های مختلف استفاده کنند و کار‌هایشان را انجام دهند.با روش گفته شده احتمالا کارمندان برای استفاده از هر سرویسی باید بار دیگر اطلاعات هویتی‌شان را وارد کنند!SSO چیست؟Single Sign-on (SSO) یک ابزار احراز هویت کاربر است که کاربران را قادر می سازد تا به طور ایمن به چندین برنامه و خدمات تنها با استفاده از یک حساب کاربری (نام کاربری و رمز عبور) دسترسی داشته باشند.همانطور که احتمالا در استفاده‌ی روزانه‌ی خودمان دیدیم،زمانی که وارد جیمیلمان می‌شویم دیگر نیازی به وارد کردن اطلاعاتمان برای سایر سرویس‌های گوگل از یوتیوب،گوگل درایو،گوگل داکز و... را نداریم.در واقع با یک بار ورود و احراز هویت در یکی از سرویس‌های گوگل دیگر نیازی به احراز هویت بریا سایر سرویس‌های گوگل را نداریم.این کار با استفاده از پروتکل دستیابی سبک و استفاده از سیستم ذخیره سازی در پایگاه داده ها روی سرورهای خاص انجام می‌شود. این فرایند در اینترنت با استفاده از ابزارهایی به نام کوکی انجام می‌شود.می‌توانیم خوشحال باشیم که با ورود SSO روز‌های طاقت فرسای به یادآوردن رمز عبور و بازیابی مدارم آن تمام شدند.تاریخچه‌ی SSOفن آوری SSO ریشه در ابزارهای هویت داخلی دارد که به سازمان ها کمک می کرد در اواسط تا اواخر دهه 1990 به طور ایمن رایانه ها، شبکه ها و سرورهای خود را به یکدیگر متصل کنند.در این زمان، سازمان‌ها شروع به مدیریت هویت کاربران خود از طریق سیستم‌های اختصاصی مانند Active Directory (AD) و Lightweight Directory Access Protocol (LDAP) کردند، سپس دسترسی امن را از طریق SSO یا ابزارهای مدیریت دسترسی وب (WAM) در محل انجام دادند.از آنجایی که IT با حرکت به سمت ابر، پراکندگی در چندین دستگاه و مواجهه با تهدیدات سایبری پیچیده‌تر به تکامل خود ادامه می‌دهد، این ابزارهای مدیریت هویت سنتی به سختی می‌توانند با پیشرفت‌های حاصل در حوزه‌ی IT خود را تطبیق دهند. تیم‌های IT اکنون به راه‌حلی نیاز دارند که دسترسی سریع و ایمن SSO به هر برنامه یا سرویسی را برای کاربران فراهم کند.SSOچگونه کار می‌کند؟SSO بر اساس مفهوم هویت فدرال(federated identity) ساخته شده است، که به معنی اشتراک گذاری ویژگی های هویتی در بین سیستم های قابل اعتماد اما مستقل است. هنگامی که یک کاربر توسط یک سیستم مورد اعتماد قرار می گیرد، به طور خودکار به سایر سیستم‌هایی که یک رابطه قابل اعتماد با سیستم اولیه برقرار کرده‌اند دسترسی پیدا می کند. این توضیح، اساس راه حل های مدرن SSO را فراهم می کند که از طریق پروتکل هایی مانند OpenID Connect و SAML 2.0 فعال می شوند.هنگامی که یک کاربر با استفاده از SSO به یک سرویس وارد می شود، یک توکن احراز هویت ایجاد شده و در مرورگر او یا در سرورهای راه حل SSO ذخیره می شود. هر برنامه یا وب‌سایتی که کاربر پس از این بخواهد به آن دسترسی پیدا کند، با سرویس SSO بررسی می شود یعنی سرویس SSO توکن کاربر را برای تأیید هویت او ارسال می‌کند و به کاربر دسترسی می‌دهد.SSO یک سرویس ارائه شده روی یک سرور است. این سرور مورد اعتماد سایر سرورها و سایت ها است و اگر شما به این سرور وارد شوید اطلاعات شما به‌صورت کاربر مورد اعتماد به سایت های مورد نیاز ارسال می‌شود. به این ترتیب دیگر نیازی نیست که در سایت های مختلف هر دفعه نام کاربری خود را وارد کنید.بنابراین اگر سرور SSO به دیگر برنامه و سرویس‌ها وابسته اعلام کند که کاربر وارد شده احراز هویت شده و مورد اعتماد است،برای استفاده از سرویس‌ها و برنامه‌های وابسته نیازی به وارد کردن نام کاربری و رمز عبور نیستتقریبا می‌توان گفت که مطرح‌ترین سرور‌های دنیا در زمینه‌ی SSO گوگل و فیسبوک هستند؛مثلا برای عضویت در همین ویرگول می‌توانیم بر روی گزینه‌ی ورود با اکانت گوگل بزنیم و عضو ویرگول شویم.فرآیند لاگین با استفاده از SSO معمولا دارای مراحل زیر است:۱) کاربر به برنامه یا وب‌سایتی که می‌خواهد به آن دسترسی داشته باشد، یا همان ارائه‌دهنده خدمت(Service Provider)، متصل می‌شود.۲) ارائه‌دهنده خدمت(Service Provider) توکنی را که حاوی اطلاعاتی درباره کاربر است، مانند آدرس ایمیل او و... را به عنوان بخشی از درخواست احراز هویت کاربر به سیستم SSO یا همان Identity Provider ارسال می‌کند.Identity Provider ابتدا بررسی می کند که آیا کاربر قبلاً احراز هویت شده است یا خیر، در این صورت به کاربر اجازه دسترسی به برنامه Service Provider را می دهد و به مرحله 5 می رود.۳) اگر کاربر وارد سیستم نشده باشد، Identity Provider از کاربر می‌خواهد تا با ارائه موارد اعتباری مورد نیاز وارد سیستم شود. این موارد اعتباری می تواند به سادگی یک نام کاربری و رمز عبور باشد یا ممکن است شامل نوعی دیگر از احراز هویت مانند یک رمز عبور یک بار مصرف (OTP) باشد.۴) هنگامی که Identity Provider اعتبار ارائه شده را تأیید کرد، توکنی را برای تأیید احراز هویت موفق به ارائه دهنده خدمت(Service Provider) ارسال می کند.۵) این توکن معمولا به شکل کوکی از طریق مرورگر کاربر به ارائه دهنده خدمت(Service Provider) ارسال می شود.۶) اعتبار سنجی توکنی که ارائه‌دهنده خدمت(Service Provider) دریافت می‌کند، بر اساس رابطه اعتمادی است که بین ارائه‌دهنده خدمت(Service Provider) و ارائه‌دهنده هویت(Identity Provider) در طول پیکربندی اولیه تنظیم شده است.۷) به کاربر اجازه دسترسی به ارائه دهنده خدمت(Service Provider) داده می شود.توکن SSO چیست؟توکن SSO مجموعه‌ای از داده‌ها یا اطلاعاتی است که در طی فرآیند SSO از یک سیستم به سیستم دیگر منتقل می‌شود.داده‌ها می توانند شامل آدرس ایمیل کاربر و اطلاعاتی در مورد سیستمی باشد که توکن را ارسال می‌کند.توکن‌ها باید به‌صورت دیجیتالی امضا شوند تا گیرنده توکن مطمئن شود که توکن از یک منبع قابل اعتماد می‌آید. گواهی‌ای که برای این امضای دیجیتال استفاده می شود در طی فرآیند پیکربندی اولیه مبادله می شود.باور‌های غلطی که درباره‌ی SSO وجود داشت۱)SSO باعث کاهش سرعت تیم IT می‌شود و بار کاری اضافه به آن‌ها تحمیل می‌کند:SSO در واقع به تیم‌های IT کمک می‌کند تا با افزایش اتوماسیون، ایجاد امنیت و دید بهتر و فعال کردن گردش‌های کاری بهتر، مؤثرتر باشند.۲) مستقر کردن SSO کار دشواری است:ابزارهای قدیمی ممکن است در زمان خود پیچیده بوده باشند، اما SSO سریع و ساده مستقر می‌شود. ابزارهای SSO امروزی دارای اتصالات از پیش ساخته شده برای هزاران برنامه محبوب هستند که باعث می‌شود تیم‌های IT مجبور به ساخت دستی این اتصالات نشوند. سازمان‌ها می‌توانند علاوه بر اتصال کاربر،آن‌ها را بدون نیاز به پیکربندی، نصب، یا پشتیبانی سخت‌افزار یا ایجاد تغییرات در فایروال خود، از دایرکتوری‌های موجود وارد کنند. SSO به راحتی قابل استقرار است، ورود کاربران و برنامه های جدید را متمرکز می کند، بسیار در دسترس است و هزینه ها را به حداقل می رساند و دسترسی ساده و در عین حال ایمن را تضمین می کند.۳) SSO یک نقطه شکست(Single Point of Faliure) ایجاد می کند، بنابراین امنیت کمتری دارد:می‌توان این طور فرض کرد که چون SSO فقط به یک رمز عبور احتیاج دارد احتمالا بستر مناسبی برای حملات سایبری خواهد بود؛اما واقعیت این است که این نقطه‌ی شکست همین الان هم وجود دارد و این نقطه‌ی شکست همان کاربر است.چرا که کاربر مجبور به مدیریت کردن تعداد زیادی از رمز‌های عبور است و اغلب این مدیریت با شکست رو به رو می‌شود و کاربر به شکل مداوم در حال بازیابی رمز‌های عبورش و احتمالا هر سری رمز‌های عبور ساده‌تری برای خودش انتخاب می‌کند تا یادآوری آن‌ها برایش راحت‌تر باشد!همین روند تکراری و تضعیف شدن رمز‌های عبور یک تهدید امنیتی جدی برای سازمان‌ها محسوب می‌شود.با حذف شدن نیاز به چندین رمز عبور و اعتبار سنجی،SSO این امکان را به تیم‌های IT می‌دهد که:۱) قوانینی برای رمز عبور داشته باشند که مطابق با پروتکل‌های امنیتی استاندار باشد،۲) برنامه‌ها،کاربران،دستگاه‌ها،مکان‌ها و شبکه را برای هر درخواست دسترسی مانیتور کنند.۴)SSO همان Password Manager است:Password Manager ها مانند یک گاو صندوق هستند که رمز‌های عبور سایت‌ها و اپلیکیشن‌های مختلف کاربر را ذخیره و یادآوری می‌کند.این گاو صندوق خودش دارای یک رمز اولیه است.با این حال، آنها بر محافظت از رمزهای عبور تمرکز می کنند، که بیش از ۸۰٪ از تمام موارد نقض امنیتی را تشکیل می دهد و به هکرها یک نقطه ورود بالقوه به یک سازمان یا هویت ارائه می دهد.در حالی که SSO دسترسی را از طریق اعتماد موجود میان ارتباطات و ساختن یک دامنه که محل انجام احراز هویت است،کنترل می‌کند.معرفی ابزار‌های متن باز برای SSO۱) IdentityServer:یک SSO متن باز رایگان در اختیار شما قرار می‌دهد.یک فریم ورک کراس پلتفرم بر مبنای OpenID Connect و OAuth2 است.علاوه بر این، این نرم افزار متن باز قابلیت احراز هویت مرکزی و مجوز را برای چندین برنامه کاربردی فراهم می کند.از هویت های فدرال، جریان های متعدد و مجوز API پشتیبانی می کند. علاوه بر این، این نرم افزار این نرم‌افزار Self Hosting به کاربران اجازه می‌دهد تا با یک مجموعه از نام کاربری و رمز عبور از تعداد زیادی از برنامه‌های کاربردی استفاده کند.این نرم افزار به زبان C# نوشته شده و تمام داکیومنت‌ها و سورس کدهایش در گیتهاب در دسترس است.از مزایای اصلی این برنامه می‌توان به موارد زیر اشاره کرد:Claim-based ProviderCross-PlatformUI CustomizationAccess Control for APISingle Sign-on /Sign-out۲) CAS:CAS یک نرم افزار متن باز SSO با احراز هویت واگذار شده است. علاوه بر این، چند زبانه است و با استفاده از پروتکل مبتنی بر ticket، خدمات مجوز مرکزی را ارائه می دهد. این نرم افزار رایگان بر اساس معماری Client-Server ساخته شده است. Central Authentication Service (CAS) از بسیاری از پروتکل ها مانند OpenID، OAuth، OpenID Connect، REST، WsFederation و SAML پشتیبانی می کند.از همه مهمتر، یک سیستم جامع برای ادغام با برنامه های third-party وجود دارد. این نرم افزار single sign-onبه زبان جاوا نوشته شده است.سورس کد آن با تمام اسناد مربوط به توسعه و استقرار در گیتهاب موجود است.از مزایای اصلی این برنامه می‌توان به موارد زیر اشاره کرد:MultilingualMultifactor authenticationMany Authorization Mechanisms (e.g. ABAC, Time/Date, REST )UI To Manage Monitoring And StatsPassword Managementشرکت‌های ارائه دهنده‌ی خدمات SSO در ایران۱) شرکت فناوران هویت الکترونیکی امن(هویتا):سامانه احراز هویت ParsSSO، سرویس ‌های احراز هویت و امضای دیجیتال مبتنی بر PKI را ارائه می ‌دهد.این سامانه از دو زیرسامانه Identity Provider و Digital Signature Gateway تشکیل شده است:زیرسامانه Identity Providerاین زیرسامانه که به اختصار IdP نامیده می ‌شود، مؤلفه‌‌ ارائه دهنده‌ خدمات AAA شامل احراز هویت، کنترل دسترسی و حسابرسی است. تمامی Service Provider ها می‌توانند با ثبت ‌نام در این زیرسامانه، خدمات AAA را به آن محول کنند. از ویژگی ‌های اصلی این زیرسامانه ارائه‌ خدمات به صورت Single Sign-On با ضریب امنیتی بالا است. همچنین این زیرسامانه از جانب Service Provider مسئولیت Policy Enforcement را بر عهده دارد.زیرسامانه Digital Signature Gatewayاین زیرسامانه که به اختصار DSG نامیده می ‌شود، مؤلفه‌‌ ارائه دهنده‌ درگاه امضای دیجیتال است. تمامی Service Provider ها می‌ توانند با ثبت ‌نام در این زیرسامانه، از درگاه امضای دیجیتال در سامانه احراز هویت متمرکز SSO به صورت امن استفاده کنند.ویژگی های سامانه احراز هویت متمرکز ParsSSOپشتیبانی از الگوریتم های HASH شامل MD5, SHA-1, SHA-2احراز هویت بر اساس چارچوب OAuth2.0 و به صورت Single Sign-Onپشتیبانی از انواع احراز هویت شامل نام کاربری و رمز عبور، توکن امضای دیجیتال سخت افزاری پارس کی، سرویس امضای همراه و OTPمدیریت یکپارچه کاربران، نقش ‌ها، سازمان ‌ها، فراهم کنندگان خدمت و نشست‌ هابرخورداری از پشتوانه حقوقی و قانونی، به دلیل قابلیت استفاده از گواهی الکترونیکی(استفاده از گواهی الکترونیکی معتبر، در محاکم قضایی از پشتوانه حقوقی و قانونی برخوردار است.)راه‌ اندازی سریع و آسان، زیرا تنها کافی است وب‌ سرویس‌ های موردنیاز توسط فراهم ‌کننده کاربرد فراخوانی شود و نیاز به هیچگونه عملیات پیاده‌ سازی زمان‌ بر و پیچیده‌ ای نیست.۲) پارسو:پارسو (Parsso) یک سامانه احراز هویت متمرکز و جامع جهت ارائه خدمات single sign-on (SSO) می‌باشد. این سامانه از تمامی پروتکل‌های رایج و استاندارد احراز هویت از جمله CAS، SAML، OAuth و OpenID و نیز از زبان‌های برنامه‌نویسی رایج پشتیبانی کرده و قابلیت اتصال به تمامی محصولات CMS را دارا می‌باشد. از برتری‌های این محصول می‌توان به پیاده‌سازی احراز هویت دو مرحله‌ای، احراز هویت مبتنی بر ویژگی‌های بیومتریک، احراز هویت با استفاده از توکن سخت‌افزاری و واسط کاربری ساده با پشتیبانی همزمان از زبان‌های فارسی و انگلیسی اشاره کرد. با این سامانه، مدیریت حساب‌های کاربری، سیاست‌های امنیتی رمزهای عبور، کنترل و پیگیری عملیات احراز هویت به صورت متمرکز فراهم می‌شود.این مطلب،بخشی از تمرین‌های درس معماری نرم‌افزار در دانشگاه شهید بهشتی است. منابعhttps://www.okta.com/blog/2021/02/single-sign-on-sso/https://www.okta.com/identity-101/what-is-identity-management-and-access-control/https://www.onelogin.com/learn/how-single-sign-on-workshttps://itbaz.net/9989/what-is-sso/https://blog.containerize.com/2021/01/29/top-5-open-source-single-sign-on-software-in-the-year-2021/