نرم افزارهای احراز هویت های یکباره یا single sign on، امکان ورود یک باره به سیستم را برای کاربران فراهم می کند. برای مثال اگر محصولات گوگل را در نظر بگیریم، با یک بار ورود و احراز هویت شدن در هر کدام از آن ها
مثلا جیمیل، امکان ورود به سایر برنامه های کاربردی نیز وجود خواهد داشت، بدون آن که نیاز به احراز هویت مجدد باشد. در حقیقت این فرآیند احراز هویت در پشت صحنه می شود، اما از دیدگاه کاربرا این کار تنها یک بار انجام شده است. همین امر باعث بهبود تجربه کاربری می شود، زیرا کاربر می داند که چندین نرم افزار متعلق به یک مجموعه هستند، پس اگر بتواند با یک بار احراز هویت، از تمامی آن ها استفاده کند، بسیار برایش رضایت بخش خواهد بود.
شاید اولین سوالی که پیرامون این موضوع به ذهن برسد این است که این فرآیند احراز هویت یکباره، آیا باعث کاهش امنیت می شود؟ زیرا کاربری که تنها یکبار احراز هویت شده است، امکان دسترسی به برنامه های دیگر را خواهد داشت و اگر مهاجمی بتواند به سرور sso دسترسی پیدا کند، امنیت تمام برنامه هایی که از آن استفاده کردند، تحت الشعاع قرار می گیرد. پس لازم است که مکانیزم های سخت گیرانه ای مانند استفاده از رمز عبور دو مرحله ای2FA در همان فرآیند احراز هویت انجام شود. زیرا همان طور که این روش مزایایی دارد، ریسک ها و سختی هایی نیز در آن وجود دارد که در ادامه به برخی از آن ها اشاره می کنیم.
یکپارچه سازی فرآیند احراز هویت مزایایی دارد که استفاده از آن را در نهایت سودمند می کند، زیرا دیگر نیاز به وجود سربار برای پیاده سازی پروتکل های امنیتی در هر برنامه کاربردی نیست و تمام دسترسی ها یکجا می توانند کنترل شوند. مثلا خطر حمله fishing کمتر می شود، چون بخش احراز هویت یکسان است و صفحات مختلفی برای آن وجود ندارد و امکان مانیتور کردن آن ساده تر است.
همچنین رضایت کاربران نیز بسیار بیشتر می شود، چون تعداد گذرواژه هایی که برای ورود به هر برنامه باید به خاطر داشته باشند کمتر شده است. اگر تعداد برنامه هایی که کاربر از آن ها استفاده می کند زیاد باشد و هر کدام اطلاعات جداگانه ای برای ثبت نام بخواهند، احتمال این که کاربر در تمام آن ها اطلاعات درستی را وارد کند، کم است؛ اطلاعاتی مثل نام،ایمیل و غیره. پس اگر این اطلاعات یکبار از کاربر دریافت شود، احتمال صحت آن ها نیز بیشتر خواهد بود.
اگر نیاز باشد هر برنامه کاربردی سطح امنیتی متفاوتی برای احراز هویت داشته باشد، نمی توان آن را در
SSO پیاده سازی کرد؛ چون همگی یکسان مدیریت می شوند. همچنین حفط امنیت و نگهداری سرور SSO بسیار حائز اهمیت است، چون در دسترس نبودن یا در معرض حمله قرار گرفتن آن می تواند موجب آسیب به برنامه های کاربردی دیگر شود.
Social SSO
این نوع احراز هویت توسط حساب یکی از سرویس های شبکه های اجتماعی افراد انجام می شود. مثلا شخصی یکبار در فیسبوک احراز هویت می شود و پس از آن اگر بخواهد وارد حساب لینکدین خود شود، می تواند همان روش احراز هویت فیسبوک را انتخاب کرده و وارد شود.
Enterprise SSO
اگر سازمانی را در نظر بگیرید که سرویس های مختلفی را به کارمندان خود ارائه می دهد، مثلا در شرکت نرم افزاری، سیستم های مدیریت کارکرد، کانفلوئنس، جیرا و غیره. اگر برای ورود به هر کدام از آن ها، کاربر را ملزم به ورود نام کاربری و گذرواژه کند، بسیار برای کارمندان ناخوشایند است؛ اما استفاده از SSO سازمانی برای سرویس های یک سازمان راه حل این مشکل خواهد بود.
LDAP
یک پروتکل در لایه اپلیکیشن برای ارتباط با سرویس دایرکتوری ها است که هر بخش در دایرکتوری می تواند سیستم عامل و ساختار متفاوت مربوط به خود را داشته باشد.
SAML
زبان ارتباطی بین سرور SSO و برنامه های کاربردی بر پایه ی xml است.
KeyCloak
این نرم افزار قابلیت SSO را در برنامه های در بستر وب فراهم می کند. زبان آن saml2.0 است و از طریق LDAP ارتباط بین اکتیو دایرکتوری و سرور احراز هویت را فراهم می کند. یک واسط کاربری دارد که کاربران می توانند نقش ها، دسترسی ها و اندازه سشن ها را در آن تعریف کنند. برنامه های مقصد در آن می توانند به زبان های مختلفی مثل جاوا، سی شارپ و جاوا اسکریپت نوشته شده باشند. سورس کد آن برای استفاده در گیت هاب موجود است.
Authelia
یک نرم افزار با قابلیت های زیاد است و امکان استفاده در مقیاس های بزرگ را دارد. از LDAP و ارتباط با اکتیو دایرکتوری ها پشتیبانی می کند. برای انجام احراز هویت از فرآیند رمز یکبار مصرف گوگل استفاده می کند و به زبان Go نوشته شده است و سورس آن در گیت هاب موجود است.
شرکت هویتا: سرویسی به نام pars sso ارائه می دهد که یک سامانه احراز هویت تمرکز و امضای دیجیتال است.
https://blog.containerize.com/2021/01/29/top-5-open-source-single-sign-on-software-in-the-year-2021/
https://www.techtarget.com/searchsecurity/definition/single-sign-on
https://authin.ir/single-sign-on-blog/
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»