آشنایی کامل با Single Sign-On (SSO) و عملکرد آن
روشهای حفظ امنیت دنیای گستردهای دارد و فناوریهای زیادی در این رابطه عرضه شدهاند. یکی از این فناوریها Single Sign-On (SSO) است که در این مقاله به معرفی کامل آن میپردازیم. با فالنیک همراه باشید. برای مشاوره شبکه توسط متخصصین خبره میتوانید از 27 سال تجربه فالنیک در این حوزه بهرهمند شوید.
فهرست محتوا
Single Sign-On (SSO) چیست؟
مکانیزم شناسایی یگانه SSO سرنام Single Sign-On یک روش احراز هویت است که به کاربران اجازه میدهد با یک بار وارد شدن به سیستم، به صورت خودکار به چندین سرویس و برنامه متصل شوند بدون آنکه نیاز به وارد کردن مجدد اطلاعات احراز هویت داشته باشند. در سناریوی SSO، کاربر یک بار احراز هویت میشود (با استفاده از نام کاربری و رمز عبور یا روش دیگری مانند احراز هویت دو عاملی) و سپس اطلاعات احراز هویت آن برای استفاده در سرویسهای مختلف به اشتراک گذاشته میشود. سپس، برای ورود به هر سرویس یا برنامه جدید، احراز هویت خودکار انجام میشود و کاربر نیازی به وارد کردن دوباره اطلاعات احراز هویت خود ندارد.
SSO چه مزایایی در اختیار کاربران قرار میدهد؟
SSO مزایای مختلفی در اختیار کاربران و سازمانها قرار میدهد. از جمله این مزایا میتوان به موارد زیر اشاره کرد:
- سادگی و صرفهجویی در زمان: با استفاده از SSO، کاربران نیازی به وارد کردن مجدد اطلاعات احراز هویت (نام کاربری و رمز عبور) خود برای دسترسی به هر سرویس جدیدی ندارند. آنها یک بار وارد سیستم شده و سپس به صورت خودکار به سرویسهای دیگر دسترسی پیدا میکنند، که زمان و تلاش مورد نیاز برای ورود به هر سرویس را کاهش میدهد.
- افزایش امنیت: استفاده از SSO میتواند امنیت را بهبود بخشد. با استفاده از SSO، کاربران تمایل کمتری به استفاده از رمزهای عبور ضعیف یا تکراری دارند، زیرا نیازی به وارد کردن آنها برای هر سرویس تکراری ندارند. همچنین، با استفاده از پروتکلهای امنیتی مانند SAML و OAuth، اطلاعات احراز هویت به طور ایمن بین سرویسها منتقل میشوند.
- تجربه کاربری بهتر: SSO به کاربران تجربه کاربری بهتری میدهد. افزایش رضایت کاربران و کاهش دردسرهای مربوط به مدیریت رمزهای عبور مختلف یکی از مزایای جذاب SSO است.
- سازگاری با سرویسهای مختلف: SSO با استفاده از پروتکلهای استاندارد مانند SAML، OAuth و OpenID Connect، توانایی سازگاری با سرویسها و برنامههای مختلف را دارد. این کار به کاربران امکان میدهد با استفاده از یک حساب کاربری مشترک، به سرویسهای مختلف دسترسی پیدا کنند.
SSO چه پروتکلهایی را پشتیبانی میکند؟
SSO معمولا توسط پروتکلهای قدرتمندی مثل SAML، OAuth و OpenID Connect پشتیبانی میشود. این پروتکلها به عنوان واسطهای بین سرویسهای مختلف و سیستم احراز هویت اصلی عمل میکنند و اطلاعات احراز هویت را بین آنها منتقل میکنند.
توضیح اجمالی هر یک از این پروتکلها به شرح زیر است:
- SAML مخفف (Security Assertion Markup Language)
یک پروتکل استاندارد صنعتی برای اشتراک گذاری اطلاعات احراز هویت است. در این روش، توکنهای احراز هویت SAML بین سرویسها و سیستم اصلی احراز هویت تبادل میشوند. سرویسدهندهها معمولا از این پروتکل برای احراز هویت و سهولت دسترسی کاربران استفاده میکنند. به طور کلی SAML برای تایید هویت و اشتراک اطلاعات احراز هویت بین سرویسها در یک مدل اعتماد مبتنی بر ادعا (claim-based) استفاده میشود. در فرآیند فوق، تایید احراز هویت کاربران توسط یک سرویس احراز هویت (Identity Provider) صورت میگیرد و اطلاعات احراز هویت به سرویسهای مصرفکننده ارسال میشود. این اطلاعات احراز هویت مواردی مثل نام کاربری، نقش کاربری، اطلاعات تکمیلی و توکنهای احراز هویت را شامل میشوند.
با استفاده از پروتکل SAML، سرویسها و سیستمهای مختلف قادر هستند اطلاعات احراز هویت و تایید هویت کاربران را در یک محیط امن و استاندارد به اشتراک بگذارند. این کار به کاربران اجازه میدهد با یک بار وارد شدن به یک سرویس احراز هویت، به چندین سرویس مختلف دسترسی پیدا کنند بدون نیاز به وارد کردن مجدد اطلاعات احراز هویت.
- OAuth مخفف (Open Authorization)
یک پروتکل تایید و اجازه دسترسی است که برای احراز هویت و دسترسی به منابع محافظت شده در سرویسهای وب استفاده میشود. OAuth به کاربر اجازه میدهد درخواست دسترسی به منابع را به سرویسدهنده اصلی ارسال کند. سرویسدهنده تایید احراز هویت را انجام داده و توکن دسترسی (Access Token) به منابع را صادر میکند. فرآیند کاری پروتکل OAuth به شرح زیر است:
- درخواست اعطای مجوز: برنامه یا کلاینت درخواست دریافت مجوز دسترسی به منابعی را برای سرویسدهنده (Service Provider) ارسال میکند.
- هدایت به سرویس احراز هویت: کلاینت به سرویس احراز هویت (Authorization Server) هدایت میشود.
- احراز هویت توسط سرویس احراز هویت: کاربر هویت خود را به سرویس احراز هویت اثبات میکند.
- صدور توکن دسترسی: سرویس احراز هویت بررسی میکند که آیا کلاینت مجوز لازم برای دسترسی به منابع را دارد یا خیر و در صورت تایید، یک توکن دسترسی (Access Token) صادر میکند.
- استفاده از توکن دسترسی: کلاینت با استفاده از توکن دسترسی، درخواست دسترسی به منابع مورد نظر را به سرویسدهنده میدهد.
- پاسخ سرویسدهنده: سرویسدهنده بررسی میکند که آیا کلاینت مجوز لازم برای دسترسی به منبع را دارد یا خیر و پاسخ مناسب را ارسال میکند.
مزیت بزرگی که پروتکل OAuth دارد در این است که کاربران میتوانند به برنامهها و سرویسها اجازه دسترسی به منابع خود را بدهند بدون اینکه اطلاعات حساب کاربری خود را با آنها به اشتراک بگذارند. به عبارت دیگر، کاربران میتوانند کنترل دقیقی روی مجوزهای دسترسی برنامهها و سرویسها داشته باشند و هر زمان که نیاز شد، این دسترسیها را لغو کنند. این پروتکل در بسیاری از سامانههای احراز هویت مثل فیس بوک، گوگل، توییتر و غیره استفاده میشود.
- OpenID Connect
OIDC مخفف OpenID Connect یک پروتکل مبتنی بر وب است که برای تایید هویت کاربران در برنامهها و سرویسهای آنلاین استفاده میشود. OIDC به عنوان یک لایه اضافی بر پروتکل OAuth 2.0 عمل میکند و قابلیت احراز هویت کاربران را به سیستمها و برنامهها ارائه میدهد. OIDC از توکنهای (JWT) مخفف JSON Web Token برای تایید هویت استفاده میکند. با استفاده از OIDC، سرویسدهنده هویت (Identity Provider)، تایید هویت کاربر را انجام میدهد و توکنهای JWT را به برنامه یا سرویس درخواست کننده (Relying Party) ارسال میکند.
OIDC از فرآیند تایید هویت کاربران با استفاده از وبسایتها و برنامههای تلفن همراه استفاده میکند. کاربران ابتدا به سرویسدهنده هویت منتقل میشوند و پس از تایید هویت با موفقیت، به برنامه یا سرویس درخواستکننده انتقال پیدا میکنند و توکنهای JWT را دریافت میکنند. این توکنها معمولا شامل اطلاعات هویتی کاربر (مانند نام کاربری، ایمیل و سایر اطلاعات مورد نیاز) هستند و برنامه یا سرویس درخواست کننده میتواند از آنها برای احراز هویت و ارتباط با سرویسدهنده هویت استفاده کند.
استفاده از OIDC مزایای مختلفی مثل استاندارد بودن، امنیت بالا، پشتیبانی از چند سرویسدهنده هویت، جریان کاری ساده و امکان اعتبارسنجی توکنها در سمت سرویسدهنده را به همراه دارد.
- Kerberos
یک پروتکل امنیتی است که برای احراز هویت و تایید هویت در شبکههای محلی (مانند شبکههای داخلی سازمانی) استفاده میشود. در این روش، کاربران با درخواست توکن احراز هویت Kerberos به سرویسدهندهها دسترسی مییابند. پروتکل Kerberos یک پروتکل امنیتی برای احراز هویت شبکه است که برای ارائه خدمات امنیتی نظیر اعتبارسنجی و تایید هویت در شبکههای کامپیوتری استفاده میشود. این پروتکل توسط محققان در دانشگاه MIT توسعه داده شده است و در سال 1988 به عنوان یک استاندارد بینالمللی (RFC 4120) توسط سازمانIETF (Internet Engineering Task Force) معرفی شد. Kerberos به عنوان یک سامانه احراز هویت مبتنی بر تیکت (Ticket-Based) عمل میکند. در این پروتکل، یک سرور احراز هویت مرکزی به نام مرکز توزیع مرکزی (Key Distribution Center) که به آن سرور اصلی اعتبارسنجی میگویند، نقش اصلی در تایید هویت کاربران را ایفا میکند. Kerberos برای احراز هویت و تایید کاربران از رمزنگاری نموداری (Cryptographic Encryption) استفاده میکند.
Single Sign-on چطور کار میکند؟
وقتی کاربر برای اولین بار به سیستم وارد می شود، باید احراز هویت کند. این کار میتواند با استفاده از نام کاربری و رمز عبور یا روشهای دیگری مانند احراز هویت دو عاملی انجام شود. سپس، اطلاعات احراز هویت کاربر در سیستم اصلی ذخیره میشود.
وقتی کاربر به سرویس دیگری درخواست دسترسی میدهد، سرویس دهنده از کاربر درخواست احراز هویت میکند. در اینجا، به جای درخواست مجدد اطلاعات احراز هویت، سرویس دهنده از سیستم اصلی احراز هویت (که معمولا یک سرویس امن و معتبر است) تایید احراز هویت کاربر را درخواست میکند. سیستم اصلی پس از تایید احراز هویت کاربر، یک توکن احراز هویت را به سرویس دهنده ارسال میکند. این توکن (SAML یا OAuth) معمولا شامل اطلاعاتی است که مشخص میکند کاربر کیست و احراز هویت آن تایید شده است.
سپس سرویس دهنده، توکن احراز هویت را بررسی میکند و در صورت معتبر بودن، دسترسی کاربر به سرویس را مجاز میکند. این فرآیند بدون نیاز به وارد کردن مجدد اطلاعات احراز هویت تکرار میشود. به این ترتیب، کاربر با یک بار وارد شدن به سیستم، به چندین سرویس و برنامه متصل میشود.
SSO قابلیتهای قدرتمندی مثل سهولت در استفاده، افزایش امنیت (به دلیل کاهش ریسک استفاده از رمز عبور ضعیف یا تکراری) و بهبود تجربه کاربری را به همراه دارد. همچنین، با استفاده از پروتکلهای استاندارد مانند SAML، OAuth و OpenID Connect، SSO با سرویسها و برنامههای مختلف سازگاری خوبی دارد.
با توجه به توضیحاتی که ارائه کردیم، عملکرد SSO را میتوان به شرح زیر اعلام کرد:
- احراز هویت اولیه: کاربر با ورود به سیستم احراز هویت میشود که شامل وارد کردن نام کاربری و رمز عبور یا استفاده از روشهای دیگری مانند احراز هویت دو عاملیست. در این مرحله، اطلاعات احراز هویت کاربر تایید میشود و یک جلسه احراز هویت برای کاربر ایجاد میشود.
- ارسال درخواست SSO: سپس، کاربر به سرویس یا برنامهای که میخواهد دسترسی پیدا کند، درخواست SSO را ارسال میکند. این درخواست ممکن است شامل اطلاعاتی مانند نام کاربری یا توکن احراز هویت باشد.
- تایید احراز هویت: سرویس یا سیستم احراز هویت اصلی (Identity Provider)، اطلاعات احراز هویت را تایید میکند. اگر اطلاعات صحیح باشند، یک تایید احراز هویت (Authentication Assertion) ایجاد میشود که شامل اطلاعات احراز هویت کاربر است.
- انتقال به سرویس مقصد: تایید احراز هویت برای سرویس یا برنامه مقصد (Service Provider) ارسال میشود تا اعتبارسنجی نهایی انجام شده و کاربر به سرویس مورد نظر هدایت میشود.
- دسترسی به سرویس: اکنون که احراز هویت انجام شده است، کاربر به سرویس مقصد وارد میشود و میتواند از آن استفاده کند. در این مرحله، کاربر نیازی به وارد کردن مجدد اطلاعات احراز هویت خود ندارد. او از توکن یا جلسه احراز هویتی که در مراحل قبل ایجاد شده، بهره میبرد.
نحوه پیادهسازی Single Sign-On چگونه است؟
برای پیادهسازی Single Sign-On، معمولا از یک سامانه مرکزی برای مدیریت احراز هویت استفاده میشود. این سامانه ممکن است با استفاده از پروتکلهایی نظیر Kerberos، SAML، OpenID Connect یا OAuth2 عمل کند. به طور کلی، ساختار پیادهسازی SSO مبتنی بر مراحل زیر است:
- استفاده از پوشه مرکزی به منظور احراز هویت
- تصدیق هویت کاربران بر مبنای اطلاعات موجود در این پوشه
- تعیین مجوزهای کاربران بر اساس Credentialهای مربوطه
پیادهسازی SSO به روشهای مختلفی صورت میپذیرد. به طور مثال، برخی از شرکتها از دو روش سریع و ساده زیر استفاده میکنند:
- اسکریپت: در این روش اسکریپت اطلاعات حساب کاربری به شکل رمزگذاری شده برای سامانه تشخیص هویت ارسال میشود و پس از تائید هویت، کاربر قادر به ورود به سیستم خواهد بود.
- کوکی: در این روش کوکیهای سامانه کاربر برای سروری که کاربر قصد ورود به آن را دارد، ارسال میشوند. به بیان دقیقتر، سامانههای نرمافزاری وبمحور که دامنه (Domain) مشابه دارند، اما روی سرورهای چندگانه قرار دارند، جهت تشخیص هویت کاربر از کوکیهایی استفاده میکنند که رمزنگاریشده هستند و روی سیستم کاربر قرار دارند. در این حالت، هویت کاربر در تمامی سرورها تائید میشود.
با اینحال، نحوه پیادهسازی دقیقتر SSO با استفاده از یک یا چند پروتکل شرح داده شده به شرح زیر است:
- تنظیمات مربوط به احراز هویت مرکزی: در این مرحله، سامانه احراز هویت مرکزی تنظیم میشود که شامل ساختار کاربران، مجوزها و تنظیمات امنیتی است.
- اتصال نرمافزارها و سرویسها به سامانه SSO: نرمافزارها و سرویسهای مورد نظر باید به سامانه SSO متصل شوند. این اتصال میتواند با استفاده از پروتکلهای مختلفی صورت گیرد، مانند انتقال توکن SAML، OAuth2 یا OpenID Connect.
- احراز هویت کاربران: کاربران با وارد کردن اطلاعات احراز هویت (نام کاربری و رمز عبور یا سایر روشهای احراز هویت مشخص شده) وارد سامانه SSO میشوند. سپس سامانه SSO اعتبارسنجی هویت کاربر را انجام میدهد و توکن اعتبارسنجی را به کاربر صادر میکند.
- ارسال توکن به سرویسها: هنگامی که کاربر به سرویس دسترسی میخواهد، سرویس از کاربر درخواست توکن اعتبارسنجی میکند. کاربر توکن را ارسال میکند و سرویس آن را به سامانه SSO ارسال میکند.
- تایید توکن و اعطای دسترسی: سامانه SSO توکن را تایید میکند و هویت کاربر را تایید میکند. اگر توکن معتبر باشد و هویت کاربر تایید شود، سامانه SSO اطلاعات مربوط به دسترسیها و مجوزهای کاربر را به سرویس مربوطه ارسال میکند.
- دسترسی به سرویس: با تایید هویت و دسترسیها توسط سامانه SSO، سرویس به کاربر اجازه میدهد تا به آن دسترسی پیدا کند. کاربر بدون وارد کردن مجدد اطلاعات احراز هویت به سرویس وارد میشود.
در پیادهسازی Single Sign-On، نیاز است تا سامانه SSO و سرویسهای مختلف با هم ارتباط برقرار کنند. برای این منظور، معمولا از پروتکلهای استاندارد مانند SAML، OAuth2 یا OpenID Connect استفاده میشود که امکان ارتباط امن و انتقال اطلاعات احراز هویت و دسترسی را فراهم میکنند. در صورتی که به خدمات امنیت شبکه نیاز دارید، متخصصین فلنیک در کنار شما هستند تا سلامت شبکه شما را تضمین کنند.