اگر عضوی از یک تیم توسعه دهندۀ وب باشید و قبلاً در این زمینه فعالیت نمودهاید یا اینکه یک کاربر معمولی اینترنت هستید، حتماً میدانید که امنیت یکی از دغدغههای اصلی بهشمار میرود. در این عصر مدرن، معمولاً کاربران از چندین سیستم استفاده میکنند که هر کدام پیادهسازی امنیتی خاص خود را دارند. علاوه بر این وبسایتها و سامانههای مختلف، از دادههای متنوعی نگهداری میکنند که فقط توسط خود کاربر یا گروهی از کاربران قابل دسترسی است.
از آنجایی که رایج ترین نوع امنیت، ترکیب قدیمی نام کاربری و رمز عبور است، اگر کاربر از آن دسته افرادی باشد که از یک ترکیب نام کاربری و رمز عبور در همه جا استفاده میکند، امنیت خود را به خطر میاندازد. از طرف دیگر به خاطر سپردن چندین ترکیب نام کاربری و رمز عبور برای سیستمهای مختلف، بسیار دشوار است.
برای حل چنین مشکلاتی راهحلهای متنوعی پیشنهاد شدهاند که احراز هویت یکپارچه، یکی از آنهاست. در این پست به تشریح سیستمهای احراز هویت یکپارچه میپردازیم و در ادامه چندین ابزار متنباز را در این زمینه معرفی میکنیم. در نهایت نیز شرکتهای ایرانی فعال در این زمینه آورده شدهاند.
احراز هویت یکپارچه (Single Sign on که معمولاً SSO نامیده میشود)، یک راهحل مناسب برای افزایش امنیت و مدیریت دسترسی به یک یا چند برنامه برای کاربران است. در سطح بالا، احراز هویت یکپارچه به این معنی است که شما یک مجموعه نام کاربری و رمز عبور برای دسترسی به چندین نرمافزار را در یکجا تجمیع نمودهاید. تمام برنامههای مورد علاقۀ خود را تصور کنید: فیسبوک، توییتر، اینستاگرام، گوگل و غیره. نام کاربری و رمز عبور همۀ آنها در یک انبار داده ذخیره میشود.
سیستمهای احراز هویت یکپارچه، بهعنوان یک ارائهدهندۀ هویت کار میکنند؛ مثلاً به نوعی مانند کارت شناسایی هستند. این یعنی سیستم احراز هویت یکپارچه در سیستم توسعه دهنده موجود نیست و در عوض، با یک ارائهدهندۀ احراز هویت (مانند لینکدین، مایکروسافت یا گوگل) همکاری میکند تا ببیند آیا میتواند هویت کاربر را تأیید کند یا خیر؟
احراز هویت بر یک رابطۀ اعتماد میان دامنهها (وبسایتها) متکی است. وقتی میخواهید به کمک احراز هویت یکپارچه وارد سیستم یا وبسایت جدیدی شوید، مراحل زیر طی خواهند شد:
1. وبسایت ابتدا بررسی میکند که آیا قبلاً توسط SSO احراز هویت شدهاید یا خیر؟ در اینصورت به شما امکان دسترسی به سایت را میدهد. اگر این کار را نکردهاید، شما را به SSO میفرستد تا وارد شوید.
2. شما تنها نام کاربری و رمز عبوری را که برای دسترسی به SSO استفاده میکنید، وارد مینمایید (مثلاً اکانت گوگل یا فیسبوک)
3. سیستم SSO احراز هویت را از ارائه دهندۀ هویت یا سیستم احراز هویتی که وبسایت از آن استفاده میکند، درخواست نموده و سپس هویت شما را تأیید میکند و در نهایت SSO را مطلع میکند.
4. سیستم SSO دادههای احراز هویت را به وبسایت ارسال میکند و شما را به آن سایت باز میگرداند.
5. پس از ورود به سیستم، سایت مقصد دادههای تایید هویت را به مرورگر شما ارسال میکند تا هر بار که به صفحه جدیدی میروید تأیید شود.
حالا که متوجه شدهایم که احراز هویت یکپارچه چیست و چگونه کار میکند، به تشریح فواید و معایب آن میپردازیم. مزایای استفاده از احراز هویت یکپارچه عبارتند از:
اما با وجود اینکه فواید بسیاری را میتوان برای استفاده از سیستمهای احراز هویت یکپارچه نام بُرد، چالشهایی نیز وجود دارند که اطلاع داشتن از آنها مهم است:
در این قسمت به پنج ابزار متنباز برتر در زمینۀ احراز هویت یکپارچه اشاره میشود.
ابزار IdentityServer یک نرمافزار متنباز و رایگان و یک چارچوب متقابل پلتفرم مبتنی بر OpenID Connect و OAuth 2 است. ضمناً این نرمافزار قابلیتهای احراز هویت مرکزی و مجوز را برای چندین برنامه فراهم نموده و از هویتهای فِدِرال، جریانهای متعدد و مجوز API پشتیبانی میکند. علاوه بر این،خود ابزار IdentityServer دارای میزبانی است که کاربران را قادر میسازد تا با یک مجموعه از نامهای کاربری و رمز عبور در بسیاری از برنامهها وارد سیستم شوند. ابزار IdentityServer به زبان #C نوشته شده و تمام کد منبع آن به همراه اسناد مربوط به استقرار و توسعه در ریپازیتوری گیتهاب آن موجود است.
برای کسب اطلاعات بیشتر راجع به ابزار IdentityServer میتوانید به آدرس وبسایت آن مراجعه نمایید.
ابزار KeyCloak یک نرمافزار رایگان و متنباز و بر پایه OpenID Connect ،OAuth2.0 و SAML2.0 بوده و قابلیتهای احراز هویت را برای برنامههای تحت وب ارائه میدهد. مهمتر از همه اینکه، این نرمافزار امکان ادغام با LDAP و Active Directory را فراهم میکند. در ابزار KeyCloak یک رابط کاربری منطقی وجود دارد که در آن کاربران میتوانند نقشها، مجوزها و جلسات را مدیریت کنند. ابزار KeyCloak عمدتاً به زبان جاوا و با ورودی کمی از زبانهای دیگر مانند جاوا اسکریپت و HTML نوشته شده است که کد منبع آن در ریپازیتوری گیتهاب مربوطه موجود است.
برای کسب اطلاعات بیشتر راجع به ابزار KeyCloak میتوانید به آدرس وبسایت آن مراجعه نمایید.
ابزار CAS یک نرمافزار متنباز با احراز هویت واگذار شده است (احراز هویت واگذار شده درواقع همان SSO با تفاوتهای کمی در تجربۀ کاربری بهحساب میآید). ابزار CAS چند زبانه است و با استفاده از پروتکل مبتنی بر تیکت، خدمات مجوز را ارائه میدهد. این نرمافزار رایگان، براساس معماری سِرور-کلایِنت ساخته شده است. سرویس احراز هویت مرکزی (CAS) از پروتکلهای زیادی مانندOpenID ،OAuth ،OpenID Connect ،REST WsFederation و SAML پشتیبانی میکند. مهمتر از همه اینکه یک سیستم جامع برای ادغام با برنامههای شخص ثالث در آن وجود دارد. ابزار CAS به زبان جاوا نوشته شده و کد منبع آن با تمام اسناد مربوط به توسعه و استقرار در ریپازیتوری گیتهاب آن موجود است.
ابزار Authelia یک نرمافزار احراز هویت یکپارچه است که دارای ویژگیهای بسیار غنی و مقیاسپذیر میباشد. این ابزار امنیت فوقالعادهای را ارائه میدهد و قابلیتهای تنظیم احراز هویت و ورود به سیستم را فراهم میکند. این نرمافزار متنباز از LDAP و Active Directory نیز پشتیبانی میکند. در ابزار Authelia یک رابط کاربری گرافیکی وجود دارد که به کاربران اجازه میدهد تا بهراحتی عملیات مورد نظرشان را انجام دهند و همچنین احراز هویت دو عاملی را بر اساس Google Authenticator OTP ارائه میدهد. این نرمافزار رایگان بوده و با یک پروکسی معکوس مانند Nginx کار میکند. ابزار Authelia به زبان Go نوشته شده و تمام کد منبع آن در ریپازیتوری گیتهاب مربوطه موجود است.
برای کسب اطلاعات بیشتر راجع به ابزار Authelia میتوانید به آدرس وبسایت آن مراجعه نمایید.
ابزار WSO2 یک سیستم مدیریت دسترسی و هویت متنباز پرکاربرد است که تقریباً از تمام استانداردهای هویت محبوب برای ارائۀ احراز هویت پشتیبانی میکند. این ابزار نقاط انتهایی API برای ادغام با سایر برنامهها دارد و با یک رابط کاربری مطلوب و مفید همراه است که تنظیمات زیادی را در اختیار کاربر قرار میدهد. علاوه بر این، ابزار WSO2 احراز هویت دو عاملی را نیز ارائه میدهد. این ابزار عمدتاً به زبان جاوا نوشته شده و تمام کد منبع آن با مستندات مربوط به توسعه و استقرار در ریپازیتوری گیتهاب مربوطه موجود است.
در این قسمت دو شرکت ایرانی که خدمات احراز هویت یکپارچه را ارائه میدهند، آورده شدهاند. البته باید گفت که درحضور سازمانهای غولپیکری مانند گوگل، مایکروسافت، فیسبوک و غیره، رقابت بسیار دشوار است، اما این شرکتها خدمات مناسبی را برای کاربران ایرانی فراهم نمودهاند.
شرکت متنباز سامان (مرکز توسعۀ نرمافزارهای باز سامان) در سال ۱۳۸۸ با هدف تولید و توسعۀ نرمافزارهای متنباز با توجه به نیاز سازمانها، دانشگاهها و شرکتهای مختلف تأسیس شد. تیم فنی این شرکت، دارای سابقهای طولانی در طراحی نرمافزارهای متنباز بهخصوص در زمینهی شبکه، سیستمهای امنیتی و برنامههای تحت شبکه دارد.
راهحل ارائه شده توسط این شرکت در زمینۀ احراز هویت یکپارچه، سامانۀ مَتین است. این سامانه در واقع یک سیستم SSO با قابلیتهای استقرار پایدار توزیع شده، پروتکلهای استاندارد، مدیریت هویت و دسترسی، پروفایل کاربری، سرویس اَبری، احراز هویت دوعاملی، ادغام با LDAP و Active Directory و غیره است.
برای کسب اطلاعات بیشتر راجعبه سامانۀ متین میتوانید بروشور آن را مطالعه نموده یا به آدرس وبسایت شرکت مراجعه کنید.
شرکت دانش بنیان فناوران هویت الکترونیکی امن (هویتا)، با هدف توسعه محصولات احراز هویت و هویتسنجی دیجیتال و ارائۀ راهکارهای مطمئن جهت تأمین امنیت اطلاعات، ارتباطات و تبادلات الکترونیکی، تشکیل شده است. هستۀ اصلی شرکت هویتا، متشکل از متخصصین حوزۀ امنیت است که فعالیت خود را از سال 1381 آغاز نموده و در زمینۀ طراحی و توسعه محصولات مبتنی بر رمزنگاری، امضای دیجیتال، گواهیهای الکترونیکی و توکن امضای دیجیتال در سال 1395 بهعنوان شرکت دانش بنیان ثبت و مستقر گردیده است.
راهحل ارائه شده توسط این شرکت در زمینۀ احراز هویت یکپارچه، سامانۀ پارس است و سرویسهای احراز هویت و امضای دیجیتال مبتنی بر PKI را ارائه میدهد. همچنین سامانۀ پارس با ارائۀ درگاه امضای دیجیتال، باعث حذف فرایند PK-Enabling در سامانههای نرمافزاری می گردد که منجر به کاهش چشمگیر زمان و هزینههای سازمان در تجهیز سامانهها به زیرساخت کلید عمومی میشود.
برای کسب اطلاعات بیشتر راجعبه سامانۀ پارس میتوانید بروشور آن را مطالعه نموده یا به آدرس وبسایت شرکت مراجعه کنید.
سیستمهای احراز هویت یکپارچه، راهکارهای مناسبی را برای ایجاد دسترسی آسانتر به چندین برنامه با استفاده از تنها یک مجموعه از مجوزها را برای کاربران فراهم میکنند. اما بیشتر از آن، این سیستمها امنیت بهتری را برای نرمافزارها ایجاد مینمایند. در این پست، با نحوۀ کارکرد این سیستمها آشنا شدیم و چند ابزار معروف و کاربردی مرتبط با آن معرفی شدند.
پیشنهاد میشود برای آشنایی بیشتر با نحوۀ کارکرد این سیستمها و پروتکلهای مختلف، مطالعۀ بیشتری انجام دهید و به وبسایتهای مختلف (مثل OAuth) سر بزنید. همچنین یک کتاب سطح مبتدی نوشتۀ جرارد بلوکدیک نیز وجود دارد که مطالعۀ آن خالی از لطف نیست.
این مطلب بهعنوان پاسخ برای بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهید بهشتی نوشته شده است که امیدوارم از آن استفاده برده باشید.
[1] Blokdyk, G. (2017). Single sign-on: Beginner’s Guide. CreateSpace Independent Publishing Platform.
[2] Jain, P. (2020, June 15). Single Sign-On(SSO) -SAML Authentication Explained - Connected Lab TechBlog. Medium.
[3] Lu, D. (2021, July 26). What Is Single Sign-On (SSO) Okta, Inc.
[4] M. (2021, June 21). Top 5 Open Source Single Sign-On Software In the Year 2021. Open Source Software Blog.
[5] Rogers, S. (2021, July 5). Single Sign-On: What It Is, How It Works, and Why You Need It. Capterra.
[6] Talic, J. (2018, March 29). Single Sign-on: How it really works? - Ingenuity. Medium.
[7] سامانه احراز هویت متمرکز (Single Sign On) | شرکت متن باز سامان. (2021). شرکت متن باز سامان.
[8] شرکت هویتا. (2020). هویتا.