پرش به محتوای اصلی
آسیب‌پذیری‌های سایت

SSO چیست؟ امنیت Single Sign-On و نکات مهم پیاده‌سازی ورود یکپارچه

SSO یا Single Sign-On فناوری ورود یکپارچه است که به کاربران اجازه می‌دهد با یک‌بار احراز هویت، به چند برنامه و سرویس متصل دسترسی پیدا کنند. این فناوری مدیریت حساب‌ها را ساده‌تر می‌کند، اما در صورت پیکربندی نادرست می‌تواند خطرهایی مانند تصاحب حساب مرکزی، سرقت نشست و سوءاستفاده از توکن‌ها ایجاد کند. استفاده از پروتکل‌های استاندارد SAML و OpenID Connect، احراز هویت چندعاملی، اعتبارسنجی دقیق توکن‌ها و مدیریت امن نشست‌ها از مهم‌ترین راهکارهای افزایش امنیت SSO هستند.

تیم امنیت رخنه‌کاو ۴۹ دقیقه مطالعه انتشار:

SSO یا Single Sign-On به معنای ورود یکپارچه است؛ روشی برای احراز هویت که به کاربران اجازه می‌دهد با یک‌بار ورود به سامانه هویت مرکزی، به چند برنامه و سرویس متصل دسترسی پیدا کنند. این فناوری مدیریت حساب‌های کاربری را ساده‌تر می‌کند، اما امنیت SSO به پیکربندی صحیح سرویس هویت، استفاده از MFA، اعتبارسنجی توکن‌ها، مدیریت نشست‌ها و کنترل دقیق مجوزهای دسترسی وابسته است.

مقدمه: چرا ورود یکپارچه به یکی از مهم‌ترین بخش‌های امنیت وب تبدیل شده است؟

تصور کنید یک شرکت برای مدیریت فعالیت‌های روزانه خود از ده سامانه مختلف استفاده می‌کند. کارکنان باید وارد ایمیل سازمانی، پنل مدیریت پروژه، سیستم حسابداری، نرم‌افزار منابع انسانی، فضای ذخیره‌سازی ابری و چند سرویس اختصاصی شوند.

اگر هر سامانه نام کاربری و رمز عبور مستقل داشته باشد، کاربران مجبورند اطلاعات ورود متعددی را مدیریت کنند. این وضعیت علاوه بر کاهش بهره‌وری، می‌تواند مشکلات امنیتی ایجاد کند.

برای مثال، بعضی کاربران ممکن است از رمزهای عبور یکسان استفاده کنند، رمزهای خود را در مکان‌های ناامن نگه دارند یا هنگام فراموش‌کردن اطلاعات ورود، فرایندهای بازیابی متعدد را طی کنند.

از طرف دیگر، تیم فناوری اطلاعات باید حساب‌های کاربران را در سامانه‌های مختلف مدیریت کند. زمانی که کارمندی از سازمان خارج می‌شود، لازم است دسترسی او به تمام سرویس‌های مرتبط بررسی و غیرفعال شود.

اگر حتی یک حساب فراموش شود، احتمال باقی‌ماندن دسترسی غیرضروری وجود دارد.

فناوری Single Sign-On برای کاهش این پیچیدگی طراحی شده است. در معماری SSO، فرایند احراز هویت در یک سامانه قابل اعتماد متمرکز می‌شود و برنامه‌های متصل، نتیجه احراز هویت را از آن دریافت می‌کنند.

بااین‌حال، تمرکز احراز هویت به معنای حذف خطرهای امنیتی نیست.

اگر مهاجم بتواند حساب مرکزی کاربر را تصاحب کند یا یکی از اجزای ارتباطی میان سامانه‌ها به‌درستی پیکربندی نشده باشد، ممکن است چندین سرویس تحت تأثیر قرار بگیرند.

به همین دلیل، ورود یکپارچه باید هم‌زمان از دو دیدگاه تجربه کاربری و امنیت سایبری بررسی شود.

در این مقاله به‌صورت جامع توضیح می‌دهیم SSO چیست، چگونه کار می‌کند، چه تفاوتی با OAuth 2.0 و OpenID Connect دارد، چه آسیب‌پذیری‌هایی در پیاده‌سازی آن اهمیت دارند و چگونه می‌توان یک معماری ورود یکپارچه امن برای برنامه‌های وب ایجاد کرد.

SSO چیست و Single Sign-On چگونه تعریف می‌شود؟

Single Sign-On یک سازوکار مدیریت احراز هویت است که امکان استفاده از یک نشست احراز هویت مرکزی برای ورود به چند برنامه مستقل را فراهم می‌کند.

در این مدل، کاربر لزوماً برای هر برنامه رمز عبور جداگانه وارد نمی‌کند. در عوض، برنامه‌ها به یک سرویس هویت اعتماد می‌کنند که وظیفه بررسی هویت کاربر را برعهده دارد.

برای نمونه، فرض کنید یک کارمند ابتدا وارد حساب سازمانی خود می‌شود.

پس از احراز هویت موفق، او می‌تواند به برنامه مدیریت پروژه مراجعه کند. این برنامه به جای درخواست مجدد رمز عبور، کاربر را به سامانه هویت مرکزی هدایت می‌کند.

اگر نشست معتبر در سامانه مرکزی وجود داشته باشد و سیاست امنیتی اجازه دهد، کاربر بدون واردکردن دوباره اطلاعات ورود احراز هویت می‌شود.

این فرایند ممکن است برای سرویس‌های دیگری نیز تکرار شود.

هدف اصلی ورود یکپارچه چیست؟

هدف SSO کاهش تعداد دفعات احراز هویت مستقل و متمرکزکردن مدیریت هویت است.

از مهم‌ترین اهداف می‌توان به ساده‌سازی ورود، کاهش وابستگی به رمزهای عبور متعدد، بهبود مدیریت کاربران و فراهم‌کردن امکان اعمال سیاست‌های امنیتی مشترک اشاره کرد.

اما باید یک نکته را در نظر گرفت: ورود یکپارچه به معنای استفاده از یک رمز عبور مشترک در همه سرویس‌ها نیست.

در معماری استاندارد، برنامه‌ها معمولاً نیازی به دریافت یا ذخیره رمز عبور اصلی کاربر ندارند.

تفاوت احراز هویت و مجوزدهی در SSO

Authentication یا احراز هویت مشخص می‌کند که کاربر چه کسی است.

Authorization یا مجوزدهی تعیین می‌کند کاربر اجازه انجام چه فعالیت‌هایی را دارد.

SSO عمدتاً فرایند احراز هویت را یکپارچه می‌کند، اما به‌تنهایی مجوز دسترسی نامحدود ایجاد نمی‌کند.

برای مثال، کاربری ممکن است با SSO وارد سامانه منابع انسانی و حسابداری شود، اما فقط اجازه مشاهده اطلاعات مشخصی را داشته باشد.

دسترسی به اطلاعات حقوق کارکنان یا تغییر تنظیمات مالی باید براساس نقش‌ها و سیاست‌های مستقل بررسی شود.

در نتیجه، احراز هویت موفق از طریق SSO نباید به معنای تأیید خودکار تمام درخواست‌های کاربر باشد.

معماری SSO و اجزای اصلی ورود یکپارچه

برای شناخت امنیت Single Sign-On باید اجزای معماری آن را بشناسیم.

اگرچه جزئیات پیاده‌سازی در محصولات مختلف متفاوت است، بیشتر سامانه‌های مبتنی بر هویت فدرال از چند مؤلفه اصلی تشکیل می‌شوند.

ارائه‌دهنده هویت یا Identity Provider

Identity Provider که معمولاً با نام IdP شناخته می‌شود، سامانه‌ای است که هویت کاربر را بررسی می‌کند.

این سامانه ممکن است از رمز عبور، احراز هویت دومرحله‌ای، Passkey، کلید امنیتی سخت‌افزاری یا سایر روش‌های احراز هویت استفاده کند.

پس از تأیید کاربر، IdP اطلاعات احراز هویت را در قالبی قابل اعتبارسنجی به برنامه مقصد منتقل می‌کند.

بسته به معماری، IdP می‌تواند یک سرویس ابری، سرور سازمانی یا سامانه اختصاصی مدیریت هویت باشد.

ارائه‌دهنده سرویس یا Service Provider

Service Provider یا SP برنامه‌ای است که کاربر قصد استفاده از آن را دارد.

در معماری مبتنی بر SAML معمولاً از اصطلاح Service Provider استفاده می‌شود.

در OpenID Connect، برنامه دریافت‌کننده اطلاعات احراز هویت اغلب Relying Party یا RP نامیده می‌شود.

این برنامه باید اطلاعات دریافت‌شده از سرویس هویت را بررسی کند و تنها پس از اعتبارسنجی موفق، نشست کاربری ایجاد کند.

کاربر یا End User

کاربر شخصی است که قصد دسترسی به سرویس را دارد.

او معمولاً از طریق مرورگر، اپلیکیشن موبایل یا نرم‌افزار سازمانی با سامانه ورود تعامل می‌کند.

در بسیاری از جریان‌های SSO، مرورگر وظیفه جابه‌جایی میان برنامه مقصد و ارائه‌دهنده هویت را برعهده دارد.

اطلاعات احراز هویت یا Assertion

Assertion به ادعایی قابل اعتبارسنجی درباره هویت یا وضعیت احراز هویت کاربر گفته می‌شود.

برای مثال، یک Assertion ممکن است اعلام کند که کاربر مشخصی در زمان معینی توسط ارائه‌دهنده هویت احراز هویت شده است.

در SAML، این اطلاعات معمولاً در ساختار XML منتقل می‌شوند.

در OpenID Connect، یکی از ابزارهای اصلی انتقال اطلاعات احراز هویت، ID Token است.

نشست کاربری یا Session

پس از تأیید اطلاعات هویتی، برنامه مقصد معمولاً نشست مستقل خود را ایجاد می‌کند.

این نشست برای نگهداری وضعیت ورود کاربر در درخواست‌های بعدی استفاده می‌شود.

بنابراین یک کاربر ممکن است هم‌زمان دارای نشست مرکزی در IdP و نشست‌های جداگانه در چند برنامه باشد.

این موضوع در طراحی خروج از حساب، لغو دسترسی و مدیریت زمان انقضا اهمیت زیادی دارد. SSO چگونه کار می‌کند؟ مراحل ورود یکپارچه

SSO چگونه کار می‌کند؟ مراحل ورود یکپارچه

برای درک نحوه عملکرد SSO، یک سامانه سازمانی شامل پنل مدیریت پروژه و سرویس هویت مرکزی را در نظر بگیرید.

مرحله اول: درخواست دسترسی به برنامه

کاربر آدرس برنامه مدیریت پروژه را باز می‌کند.

برنامه بررسی می‌کند که آیا نشست معتبر محلی برای کاربر وجود دارد یا خیر.

اگر کاربر قبلاً وارد نشده باشد، برنامه فرایند احراز هویت را آغاز می‌کند.

مرحله دوم: هدایت کاربر به ارائه‌دهنده هویت

برنامه با استفاده از پروتکل پشتیبانی‌شده، کاربر را به صفحه ورود IdP هدایت می‌کند.

در این مرحله، اطلاعاتی مانند شناسه برنامه، مقصد بازگشت و پارامترهای لازم برای محافظت از تراکنش احراز هویت منتقل می‌شوند.

این اطلاعات باید براساس استاندارد و با تنظیمات امنیتی صحیح تولید شوند.

مرحله سوم: بررسی نشست مرکزی

IdP بررسی می‌کند که آیا کاربر از قبل نشست احراز هویت معتبر دارد یا خیر.

اگر نشست مناسبی وجود داشته باشد، ممکن است نیازی به ورود مجدد رمز عبور نباشد.

اما اگر نشست منقضی شده باشد یا برنامه مقصد به سطح امنیت بالاتری نیاز داشته باشد، ارائه‌دهنده هویت می‌تواند احراز هویت مجدد درخواست کند.

مرحله چهارم: انجام احراز هویت

اگر کاربر هنوز احراز هویت نشده باشد، IdP اطلاعات لازم را دریافت می‌کند.

این مرحله ممکن است شامل رمز عبور، Passkey یا احراز هویت چندعاملی باشد.

برنامه مقصد نباید اطلاعات ورود اصلی کاربر را از طریق فرم‌های غیرضروری جمع‌آوری کند.

مرحله پنجم: ایجاد پاسخ احراز هویت

پس از تأیید موفق، IdP پاسخ مناسب را مطابق پروتکل تولید می‌کند.

در OpenID Connect مبتنی بر Authorization Code Flow، برنامه معمولاً ابتدا یک کد مجوز دریافت می‌کند و سپس در ارتباطی کنترل‌شده آن را با توکن‌های مربوط مبادله می‌کند.

در SAML، ممکن است Assertion امضاشده به برنامه مقصد ارائه شود.

مرحله ششم: اعتبارسنجی پاسخ

برنامه مقصد باید پاسخ دریافتی را بررسی کند.

این مرحله شامل اعتبارسنجی امضا، صادرکننده، مخاطب، زمان اعتبار و سایر محدودیت‌های امنیتی متناسب با پروتکل است.

اگر هرکدام از بررسی‌های ضروری ناموفق باشند، برنامه نباید کاربر را وارد حساب کند.

مرحله هفتم: ایجاد نشست محلی

پس از اعتبارسنجی موفق، برنامه کاربر را به حساب داخلی مرتبط متصل می‌کند.

سپس نشست محلی جدیدی ایجاد می‌شود.

شناسه نشست باید تصادفی، غیرقابل پیش‌بینی و در برابر سرقت یا تثبیت نشست محافظت‌شده باشد.

مرحله هشتم: دسترسی به برنامه‌های دیگر

وقتی کاربر سرویس دیگری را باز می‌کند، آن سرویس نیز می‌تواند از IdP برای احراز هویت استفاده کند.

اگر نشست مرکزی معتبر باشد و سیاست‌ها اجازه دهند، کاربر ممکن است بدون واردکردن دوباره اطلاعات ورود به سرویس دوم دسترسی پیدا کند.

این فرایند همان تجربه ورود یکپارچه است.

تفاوت SSO و ورود معمولی با نام کاربری و رمز عبور

در سیستم‌های سنتی، هر برنامه ممکن است پایگاه داده کاربران و فرایند احراز هویت اختصاصی داشته باشد.

برای مثال، یک شرکت ممکن است پنج برنامه داشته باشد که هرکدام رمز عبور کاربران را جداگانه مدیریت می‌کنند.

این مدل مشکلاتی مانند پراکندگی اطلاعات هویتی، سیاست‌های رمز عبور متفاوت و دشواری حذف حساب‌ها ایجاد می‌کند.

در مدل SSO، مسئولیت اصلی احراز هویت به سرویس مرکزی واگذار می‌شود.

برنامه‌ها همچنان می‌توانند نشست و مجوزهای داخلی خود را مدیریت کنند، اما برای شناسایی اولیه کاربر به IdP اعتماد دارند.

معیار مقایسهورود معمولیورود یکپارچه SSO
فرایند احراز هویتمستقل در هر برنامهمتکی بر سرویس هویت مشترک
تعداد ورودهای تکراریمعمولاً بیشترمعمولاً کمتر
مدیریت سیاست‌های ورودپراکندهقابل تمرکز
فعال‌سازی MFAوابسته به هر برنامهقابل اعمال در سرویس هویت
مدیریت خروج کاربراننیازمند هماهنگی میان سامانه‌هاامکان یکپارچه‌سازی بیشتر
وابستگی به سرویس مرکزیکمتربیشتر
پیامد تصاحب حساب اصلیممکن است محدود به یک سرویس باشدممکن است چند سرویس را درگیر کند
پیچیدگی راه‌اندازیکمتر برای برنامه مستقلبیشتر در معماری چندسامانه‌ای

SSO زمانی بیشترین ارزش را دارد که سازمان از چندین برنامه مرتبط استفاده کند و به کنترل متمرکز هویت نیاز داشته باشد. تفاوت SSO با OAuth 2.0، OpenID Connect و SAML

تفاوت SSO با OAuth 2.0، OpenID Connect و SAML

یکی از رایج‌ترین اشتباهات، یکسان دانستن SSO با پروتکل‌هایی مانند OAuth و SAML است.

SSO یک تجربه و الگوی ورود است، درحالی‌که این پروتکل‌ها سازوکارهایی برای انتقال اطلاعات هویتی یا اعطای مجوز فراهم می‌کنند.

OAuth 2.0 چیست؟

OAuth 2.0 یک چارچوب اعطای مجوز یا Authorization Framework است.

هدف اصلی آن فراهم‌کردن امکان دسترسی کنترل‌شده یک برنامه به منابع مشخص، بدون نیاز به دریافت رمز عبور اصلی کاربر است.

برای مثال، برنامه‌ای ممکن است با اجازه کاربر به بخشی از اطلاعات یک سرویس دیگر دسترسی پیدا کند.

اما OAuth 2.0 به‌تنهایی پروتکل استاندارد احراز هویت کاربر نیست.

استفاده از Access Token به‌عنوان مدرک هویت، بدون طراحی و اعتبارسنجی مناسب، می‌تواند مشکلات امنیتی ایجاد کند.

OpenID Connect چیست؟

OpenID Connect یا OIDC یک لایه هویت مبتنی بر OAuth 2.0 است.

این پروتکل امکان احراز هویت کاربر و دریافت اطلاعات استاندارد درباره هویت او را فراهم می‌کند.

در OIDC، ارائه‌دهنده هویت می‌تواند ID Token صادر کند.

برنامه مقصد باید این توکن را طبق قواعد پروتکل اعتبارسنجی کند.

OIDC برای بسیاری از برنامه‌های وب مدرن، اپلیکیشن‌های موبایل و معماری‌های مبتنی بر API انتخاب مناسبی است.

SAML چیست؟

Security Assertion Markup Language یا SAML یک استاندارد مبتنی بر XML برای تبادل اطلاعات احراز هویت و سایر ادعاهای هویتی است.

SAML به‌ویژه در سامانه‌های سازمانی و سرویس‌های قدیمی‌تر کاربرد گسترده‌ای دارد.

در این معماری، ارائه‌دهنده هویت یک Assertion صادر می‌کند و Service Provider پس از اعتبارسنجی آن می‌تواند کاربر را وارد حساب کند.

امنیت SAML به عواملی مانند اعتبارسنجی امضای XML، بررسی مقصد، مخاطب و زمان اعتبار وابسته است.

مقایسه SAML و OpenID Connect

ویژگیSAML 2.0OpenID Connect
قالب رایج اطلاعات هویتXML AssertionID Token، معمولاً JWT
کاربرد رایجسامانه‌های سازمانی و فدراسیون هویتوب، موبایل و برنامه‌های مدرن
روش یکپارچه‌سازیمبتنی بر پروفایل‌ها و Bindingهای SAMLمبتنی بر OAuth 2.0
وابستگی به XMLبلهخیر
استفاده در SSOبلهبله
اعتبارسنجی اصلیامضا، مقصد، مخاطب، شرایط Assertionامضا، صادرکننده، مخاطب، زمان و پارامترهای جریان
پشتیبانی از ورود یکپارچهگستردهگسترده

هیچ‌کدام به‌صورت مطلق امن‌تر از دیگری نیستند.

امنیت واقعی به انتخاب جریان مناسب، پیاده‌سازی استاندارد و کیفیت پیکربندی بستگی دارد.

امنیت SSO چیست و چرا اهمیت دارد؟

امنیت SSO شامل مجموعه‌ای از کنترل‌ها برای محافظت از هویت کاربران، تراکنش‌های ورود، توکن‌ها، نشست‌ها و مجوزهای دسترسی است.

در یک معماری ورود یکپارچه، برنامه‌ها به سامانه مرکزی اعتماد می‌کنند.

این اعتماد مزیت مدیریتی ایجاد می‌کند، اما سطح اهمیت امنیت ارائه‌دهنده هویت را افزایش می‌دهد.

اگر حساب مرکزی کاربر تصاحب شود، مهاجم ممکن است بتواند به چندین برنامه متصل وارد شود.

البته دامنه واقعی دسترسی به مجوزهای کاربر، سیاست‌های احراز هویت و کنترل‌های هر سرویس بستگی دارد.

تمرکز هویت و تمرکز ریسک

تمرکز احراز هویت یک مزیت مهم مدیریتی است.

سازمان می‌تواند سیاست‌های ورود را در یک نقطه تنظیم کند، رویدادها را بهتر مشاهده کند و احراز هویت چندعاملی را گسترده‌تر اجرا کند.

اما این تمرکز ممکن است یک نقطه حساس نیز ایجاد کند.

اختلال در IdP، اشتباه در تنظیمات یا افشای کلیدهای امضای توکن می‌تواند چندین سرویس را تحت تأثیر قرار دهد.

بنابراین باید بین سادگی مدیریت و تاب‌آوری امنیتی تعادل برقرار شود.

امنیت ارتباط اعتماد میان سرویس‌ها

برنامه مقصد نباید صرفاً به دلیل دریافت پاسخی از یک آدرس یا وجود یک شناسه کاربری، هویت کاربر را تأیید کند.

پاسخ باید از ارائه‌دهنده هویت مورد انتظار صادر شده باشد و برای همان برنامه و همان تراکنش اعتبار داشته باشد.

اعتماد باید با سازوکارهای رمزنگاری و قواعد استاندارد برقرار شود، نه با فرضیات برنامه‌نویسی. مهم‌ترین تهدیدها و آسیب‌پذیری‌های SSO

مهم‌ترین تهدیدها و آسیب‌پذیری‌های SSO

شناخت تهدیدها برای طراحی معماری امن ضروری است.

ورود یکپارچه می‌تواند برخی مشکلات امنیتی سنتی را کاهش دهد، اما آسیب‌پذیری‌های خاص خود را نیز دارد.

حملات فیشینگ علیه حساب مرکزی

Phishing یا فیشینگ یکی از مهم‌ترین تهدیدهای ورود یکپارچه است.

مهاجم ممکن است با جعل صفحه ورود سازمانی تلاش کند اطلاعات احراز هویت کاربر را به دست آورد.

از آنجا که یک حساب مرکزی می‌تواند به چند سرویس متصل باشد، موفقیت حمله ممکن است پیامد گسترده‌تری داشته باشد.

برای کاهش خطر، باید از روش‌های احراز هویت مقاوم در برابر فیشینگ مانند Passkey و کلیدهای امنیتی سازگار استفاده شود.

آموزش کارکنان، استفاده از دامنه‌های معتبر و پایش تلاش‌های ورود مشکوک نیز اهمیت دارد.

سرقت نشست یا Session Hijacking

حتی اگر فرایند احراز هویت بسیار قوی باشد، مهاجم ممکن است تلاش کند نشست معتبر کاربر را تصاحب کند.

برای مثال، ضعف XSS در یک برنامه متصل می‌تواند امکان سوءاستفاده از نشست همان برنامه را ایجاد کند.

استفاده از Cookie با ویژگی‌های مناسب، محدودسازی زمان نشست و جلوگیری از اجرای اسکریپت‌های غیرمجاز از اقدامات ضروری هستند.

حملات Replay

در Replay Attack، مهاجم تلاش می‌کند یک پیام یا مدرک احراز هویت معتبر را دوباره استفاده کند.

اگر سامانه نتواند پیام‌های تکراری یا منقضی‌شده را شناسایی کند، احتمال سوءاستفاده وجود دارد.

برای مقابله با این تهدید باید از محدودیت زمانی، شناسه تراکنش، Nonce و مکانیزم‌های مناسب جلوگیری از استفاده مجدد بهره گرفت.

جزئیات کنترل به پروتکل بستگی دارد.

اعتبارسنجی ناقص توکن‌ها

اگر برنامه یک ID Token را بدون بررسی امضا یا مخاطب بپذیرد، ممکن است اطلاعات نامعتبر را به‌عنوان مدرک احراز هویت قبول کند.

این ضعف می‌تواند از طراحی نادرست یا استفاده اشتباه از کتابخانه‌های احراز هویت ناشی شود.

توکن باید با کلید معتبر و قواعد مورد انتظار بررسی شود.

اشتباه در اتصال حساب‌ها

Account Linking فرایندی است که هویت دریافت‌شده از سرویس مرکزی را به حساب محلی برنامه متصل می‌کند.

اگر برنامه صرفاً براساس ایمیل ارسالی و بدون بررسی شرایط اعتماد حساب‌ها را متصل کند، احتمال اتصال اشتباه هویت وجود دارد.

شناسه پایدار و اختصاصی کاربر در ارائه‌دهنده هویت معمولاً مبنای مناسب‌تری برای شناسایی است.

ضعف در خروج از حساب

یکی دیگر از مشکلات SSO، تصور اشتباه درباره خروج از حساب است.

ممکن است کاربر از یک برنامه خارج شود، اما نشست مرکزی او در IdP همچنان فعال باشد.

همچنین خروج از IdP الزاماً تمام نشست‌های محلی برنامه‌های دیگر را در همان لحظه از بین نمی‌برد.

این رفتار باید براساس معماری و سیاست خروج مدیریت شود.

وابستگی بیش‌ازحد به ارائه‌دهنده هویت

اگر IdP در دسترس نباشد، کاربران جدید ممکن است نتوانند وارد سرویس‌ها شوند.

برخی نشست‌های محلی موجود ممکن است تا زمان انقضا به فعالیت ادامه دهند.

این رفتار باید پیش از استقرار بررسی شود تا از توقف غیرمنتظره فعالیت‌های سازمان جلوگیری شود.

اعتبارسنجی امن توکن‌ها در Single Sign-On

یکی از حساس‌ترین مراحل ورود یکپارچه، بررسی اطلاعات صادرشده توسط ارائه‌دهنده هویت است.

در OpenID Connect، ID Token معمولاً مجموعه‌ای از Claimها را دربر می‌گیرد.

Claim به اطلاعاتی گفته می‌شود که درباره کاربر یا رویداد احراز هویت بیان می‌شوند.

بررسی Issuer

فیلد iss نشان می‌دهد که توکن توسط کدام صادرکننده ایجاد شده است.

برنامه باید بررسی کند مقدار آن دقیقاً با صادرکننده مورد اعتماد و پیکربندی‌شده مطابقت دارد.

پذیرش هر صادرکننده ناشناخته می‌تواند امنیت فرایند ورود را تضعیف کند.

بررسی Audience

فیلد aud مخاطب یا مخاطبان مجاز توکن را مشخص می‌کند.

برنامه باید اطمینان پیدا کند توکن برای همان کلاینت یا مخاطب مورد انتظار صادر شده است.

توکنی که برای برنامه دیگری صادر شده، نباید بدون مبنای معتبر برای ورود به این برنامه پذیرفته شود.

بررسی تاریخ اعتبار

فیلد exp زمان انقضای توکن را مشخص می‌کند.

در صورت وجود Claimهای زمانی دیگر مانند nbf و iat، بررسی آن‌ها باید مطابق استاندارد و سیاست امنیتی انجام شود.

اختلاف ساعت سیستم‌ها نیز باید در محدوده‌ای کوچک و کنترل‌شده مدیریت شود.

بررسی امضای دیجیتال

امضای دیجیتال برای اطمینان از اصالت و تمامیت اطلاعات استفاده می‌شود.

برنامه باید امضا را با استفاده از کلید معتبر و الگوریتم مجاز بررسی کند.

وجود ظاهری یک امضا در توکن کافی نیست.

همچنین نباید الگوریتم مورد استفاده صرفاً بر اساس اطلاعات کنترل‌نشده داخل توکن پذیرفته شود.

استفاده صحیح از Nonce

Nonce یک مقدار تصادفی و وابسته به تراکنش است که در جریان‌های مربوط برای جلوگیری از برخی حملات بازپخش یا اتصال نادرست پاسخ استفاده می‌شود.

اگر برنامه در درخواست احراز هویت Nonce ارسال کرده باشد، باید مقدار متناظر در پاسخ را مطابق قواعد پروتکل بررسی کند.

Nonce نباید به‌صورت ثابت یا قابل پیش‌بینی استفاده شود.

تفاوت ID Token و Access Token

ID Token برای انتقال اطلاعات احراز هویت به کلاینت OIDC طراحی شده است.

Access Token برای دسترسی مجاز به یک منبع محافظت‌شده استفاده می‌شود.

این دو نباید به جای یکدیگر استفاده شوند.

برای مثال، API باید اعتبار Access Token را براساس قواعد توکن، صادرکننده، مخاطب، دامنه دسترسی و سیاست‌های مربوط بررسی کند.

پذیرش ID Token به جای Access Token در API می‌تواند باعث خطاهای امنیتی شود.

نقش Authorization Code Flow و PKCE در امنیت SSO

برای بسیاری از برنامه‌های مدرن مبتنی بر OpenID Connect، جریان Authorization Code انتخاب مناسبی است.

در این مدل، برنامه پس از احراز هویت کاربر، ابتدا یک کد کوتاه‌عمر دریافت می‌کند.

سپس این کد از طریق فرایند تعریف‌شده پروتکل به توکن‌های لازم تبدیل می‌شود.

چرا Authorization Code Flow اهمیت دارد؟

این جریان امکان جداسازی مرحله تعامل کاربر با IdP از مرحله دریافت توکن را فراهم می‌کند.

در برنامه‌های سمت سرور، مبادله کد با توکن می‌تواند از طریق ارتباط Backend انجام شود.

به این ترتیب، برنامه امکان مدیریت کنترل‌شده‌تر اطلاعات حساس را خواهد داشت.

PKCE چیست؟

PKCE مخفف Proof Key for Code Exchange است.

این مکانیزم برای کاهش خطر سوءاستفاده از کد مجوز طراحی شده است.

در PKCE، کلاینت پیش از شروع فرایند یک مقدار تصادفی به نام Code Verifier تولید می‌کند.

سپس مقدار مشتق‌شده‌ای از آن را به‌عنوان Code Challenge در درخواست اولیه قرار می‌دهد.

هنگام مبادله کد، کلاینت باید مقدار اصلی را ارائه کند تا سرور مجوز بتواند ارتباط آن را با درخواست اولیه بررسی کند.

آیا PKCE جایگزین تمام کنترل‌های امنیتی است؟

خیر.

PKCE کنترل مهمی برای امنیت جریان مجوز است، اما نیاز به بررسی صادرکننده، مقصد بازگشت، توکن‌ها و نشست‌ها را از بین نمی‌برد.

در برنامه‌هایی که با چند ارائه‌دهنده هویت کار می‌کنند، کنترل‌های جلوگیری از اشتباه در تشخیص صادرکننده نیز اهمیت دارند.

استفاده از Authorization Code Flow همراه PKCE و کنترل‌های مناسب تراکنش، گزینه‌ای مطلوب برای بسیاری از سناریوهای جدید است.

امنیت SAML در پیاده‌سازی ورود یکپارچه

SAML همچنان در بسیاری از سامانه‌های سازمانی استفاده می‌شود.

اما ساختار XML و قواعد اعتبارسنجی آن نیازمند دقت بالایی است.

اعتبارسنجی امضای XML

برنامه مقصد باید امضای دیجیتال مربوط به پاسخ یا Assertion را مطابق پروفایل مورد استفاده بررسی کند.

نکته مهم این است که داده مصرف‌شده توسط برنامه باید همان داده‌ای باشد که تحت پوشش امضای معتبر قرار گرفته است.

پذیرش امضا بدون بررسی دقیق محتوای امضاشده می‌تواند مشکلات جدی ایجاد کند.

جلوگیری از XML Signature Wrapping

XML Signature Wrapping به خانواده‌ای از ضعف‌ها اشاره دارد که در آن‌ها تفاوت میان بخشی که امضای آن بررسی شده و بخشی که برنامه پردازش می‌کند، مورد سوءاستفاده قرار می‌گیرد.

راهکار مناسب استفاده از کتابخانه‌های معتبر، بررسی صحیح ارجاع امضا و محدودکردن ساختارهای پذیرفته‌شده است.

پیاده‌سازی دستی اعتبارسنجی امضای SAML معمولاً انتخاب مناسبی نیست.

بررسی Audience و Recipient

Audience مشخص می‌کند Assertion برای کدام سرویس صادر شده است.

Recipient نیز مقصد مورد انتظار پاسخ را مشخص می‌کند.

این مقادیر باید با اطلاعات پیکربندی‌شده برنامه مطابقت داشته باشند.

بررسی InResponseTo

در جریان‌هایی که برنامه درخواست احراز هویت را آغاز می‌کند، مقدار InResponseTo می‌تواند پاسخ را به درخواست قبلی مرتبط کند.

این ارتباط باید طبق الزامات پروفایل SAML بررسی شود.

همچنین شناسه‌های Assertion و Response باید برای مقابله با استفاده مجدد مدیریت شوند.

محدودیت‌های زمانی

مقادیر زمانی مانند NotBefore و NotOnOrAfter مشخص می‌کنند Assertion در چه بازه‌ای معتبر است.

برنامه نباید پاسخ‌های منقضی‌شده یا خارج از محدوده زمانی مجاز را بپذیرد.

مدیریت امن Metadata

Metadata در SAML اطلاعاتی مانند شناسه سرویس، نقاط ارتباطی و کلیدهای اعتبارسنجی را مشخص می‌کند.

به‌روزرسانی کلیدها باید با فرایندی کنترل‌شده انجام شود.

همچنین دریافت Metadata از منابع غیرمعتبر یا تغییر خودکار تنظیمات اعتماد بدون اعتبارسنجی می‌تواند خطرناک باشد. نقش MFA و Passkey در افزایش امنیت SSO

نقش MFA و Passkey در افزایش امنیت SSO

یکی از مؤثرترین روش‌های تقویت امنیت SSO، استفاده از احراز هویت چندعاملی است.

MFA یا Multi-Factor Authentication به استفاده از چند عامل مستقل برای احراز هویت اشاره دارد.

این عوامل ممکن است شامل چیزی باشند که کاربر می‌داند، چیزی که در اختیار دارد یا ویژگی زیستی او.

چرا MFA برای ورود یکپارچه مهم است؟

وقتی چندین برنامه به یک حساب مرکزی وابسته‌اند، محافظت از همان حساب اهمیت بیشتری پیدا می‌کند.

اگر تنها عامل ورود رمز عبور باشد، افشای رمز ممکن است دسترسی به چند سرویس را در معرض خطر قرار دهد.

MFA می‌تواند این ریسک را کاهش دهد.

تفاوت روش‌های MFA

کد پیامکی، برنامه تولید رمز یک‌بارمصرف، اعلان تأیید ورود و کلید امنیتی همگی می‌توانند در سناریوهای مختلف استفاده شوند.

اما مقاومت امنیتی آن‌ها یکسان نیست.

برای مثال، کدهای یک‌بارمصرف ممکن است در برابر صفحات فیشینگ بلادرنگ آسیب‌پذیر باشند.

در مقابل، روش‌های مبتنی بر استاندارد FIDO2 و WebAuthn می‌توانند احراز هویت مقاوم در برابر فیشینگ فراهم کنند.

Passkey چیست؟

Passkey یک روش احراز هویت مبتنی بر رمزنگاری کلید عمومی است.

در این روش، کلید خصوصی کاربر برای اثبات هویت استفاده می‌شود و نیازی نیست رمز عبور سنتی برای هر ورود وارد شود.

Passkey می‌تواند تجربه کاربری ساده‌تری ایجاد کند و در صورت پیاده‌سازی صحیح، مقاومت مناسبی در برابر فیشینگ داشته باشد.

احراز هویت مرحله‌ای یا Step-Up Authentication

در برخی برنامه‌ها، ورود اولیه برای مشاهده اطلاعات معمولی کافی است.

اما انجام عملیات حساس ممکن است به تأیید دوباره هویت نیاز داشته باشد.

به این رویکرد Step-Up Authentication گفته می‌شود.

برای مثال، تغییر تنظیمات امنیتی، ثبت حساب بانکی جدید یا تأیید عملیات مالی مهم می‌تواند نیازمند احراز هویت با سطح اطمینان بالاتر باشد.

در چنین شرایطی، برنامه باید سطح احراز هویت انجام‌شده را بررسی کند و صرف وجود نشست SSO را کافی نداند.

امنیت نشست یکی از مهم‌ترین بخش‌های هر سامانه ورود یکپارچه است.

گاهی تمرکز اصلی تیم توسعه بر اعتبارسنجی توکن قرار می‌گیرد، اما نشست محلی برنامه به‌اندازه کافی محافظت نمی‌شود.

اگر برنامه از Cookie برای نگهداری شناسه نشست استفاده می‌کند، باید ویژگی‌های امنیتی مناسب را فعال کند.

ویژگی Secure باعث می‌شود مرورگر Cookie را فقط در ارتباطات امن ارسال کند.

ویژگی HttpOnly دسترسی مستقیم JavaScript به Cookie را محدود می‌کند.

ویژگی SameSite نیز می‌تواند در کاهش برخی حملات CSRF نقش داشته باشد.

بااین‌حال، SameSite به‌تنهایی جایگزین محافظت مناسب در برابر CSRF نیست.

جلوگیری از Session Fixation

Session Fixation زمانی رخ می‌دهد که مهاجم بتواند شناسه نشست مشخصی را به کاربر تحمیل کند و پس از ورود کاربر از همان نشست سوءاستفاده کند.

برای کاهش این خطر، برنامه باید هنگام احراز هویت موفق یا تغییر سطح دسترسی، شناسه نشست را به‌صورت امن بازتولید کند.

محدودیت زمانی نشست

نشست‌ها نباید بدون محدودیت زمانی فعال باقی بمانند.

Idle Timeout مدت مجاز بی‌فعالیتی را مشخص می‌کند.

Absolute Timeout نیز حداکثر مدت اعتبار نشست را بدون توجه به میزان فعالیت تعیین می‌کند.

این محدودیت‌ها باید متناسب با ریسک برنامه تنظیم شوند.

نگهداری ایمن توکن‌ها

ذخیره توکن‌های حساس در محیط‌هایی که کد JavaScript قابل دسترسی به آن‌ها است، می‌تواند پیامد بعضی حملات XSS را افزایش دهد.

در برنامه‌های وبی که معماری آن اجازه می‌دهد، استفاده از Backend for Frontend یا BFF و نگهداری کنترل‌شده توکن‌ها در سمت سرور می‌تواند گزینه مناسب‌تری باشد.

انتخاب روش ذخیره‌سازی باید براساس معماری، مدل تهدید و قابلیت‌های برنامه انجام شود.

جلوگیری از CSRF

اگر برنامه از نشست مبتنی بر Cookie استفاده می‌کند، باید برای درخواست‌های تغییر‌دهنده وضعیت از کنترل‌های مناسب CSRF استفاده کند.

همچنین در جریان‌های احراز هویت فدرال، پارامترهایی مانند state، PKCE و nonce براساس نقش و الزامات استاندارد اهمیت دارند.

نباید این کنترل‌ها را بدون توجه به جریان پروتکل جایگزین یکدیگر دانست.

خروج از حساب در SSO و چالش Single Logout

یکی از پیچیده‌ترین موضوعات در پیاده‌سازی ورود یکپارچه، مدیریت خروج از حساب است.

کاربر ممکن است تصور کند با انتخاب گزینه خروج در یک برنامه، دسترسی او در تمام سرویس‌ها پایان یافته است.

اما این رفتار همیشه رخ نمی‌دهد.

خروج محلی یا Local Logout

در Local Logout، برنامه فقط نشست خودش را باطل می‌کند.

اگر نشست مرکزی در IdP فعال باشد، کاربر ممکن است هنگام مراجعه مجدد به همان برنامه بدون واردکردن رمز عبور، دوباره احراز هویت شود.

این رفتار الزاماً نقص امنیتی نیست؛ بلکه بخشی از معماری ورود یکپارچه است که باید به‌درستی مدیریت و برای کاربر روشن شود.

خروج یکپارچه یا Single Logout

Single Logout یا SLO به تلاش برای پایان‌دادن هماهنگ نشست‌ها در چند سرویس گفته می‌شود.

پشتیبانی از این قابلیت به پروتکل، محصول IdP و برنامه‌های متصل بستگی دارد.

در OpenID Connect، روش‌هایی مانند RP-Initiated Logout، Front-Channel Logout و Back-Channel Logout برای سناریوهای مختلف تعریف شده‌اند.

محدودیت خروج سراسری

حتی در صورت استفاده از پروتکل خروج، ممکن است تمام نشست‌ها فوراً پایان پیدا نکنند.

برخی برنامه‌ها ممکن است ارتباط لازم را دریافت نکنند یا نشست مستقل خود را با سیاست متفاوتی نگهداری کنند.

بنابراین خروج سراسری باید به‌صورت عملی آزمایش شود.

خروج اضطراری کاربران

برای کاربران دارای دسترسی حساس، سازمان باید امکان لغو سریع نشست‌ها و دسترسی‌ها را فراهم کند.

این قابلیت ممکن است به ترکیبی از غیرفعال‌سازی حساب مرکزی، لغو توکن‌های قابل ابطال، پایان نشست‌های محلی و سیاست‌های کوتاه‌مدت اعتبار نیاز داشته باشد.

صرف غیرفعال‌کردن حساب در IdP همیشه تضمین نمی‌کند که تمام نشست‌های قبلی بلافاصله غیرقابل استفاده شوند.

مدیریت نقش‌ها و مجوزهای دسترسی در SSO

ورود یکپارچه تنها یکی از بخش‌های مدیریت هویت سازمانی است.

پس از احراز هویت، باید مشخص شود که کاربر چه سطح دسترسی دارد.

مدل Role-Based Access Control

RBAC یا کنترل دسترسی مبتنی بر نقش، مجوزها را براساس نقش‌های تعریف‌شده به کاربران اختصاص می‌دهد.

برای مثال، یک سامانه ممکن است نقش‌هایی مانند کاربر عادی، حسابدار و مدیر داشته باشد.

در این مدل، ورود موفق از طریق SSO صرفاً هویت کاربر را مشخص می‌کند.

خود برنامه باید نقش و مجوز مناسب او را تعیین کند.

اصل حداقل دسترسی

Principle of Least Privilege به معنای اعطای حداقل مجوز لازم برای انجام وظایف است.

کاربر نباید تنها به دلیل تعلق به یک سازمان، به تمام اطلاعات آن سازمان دسترسی داشته باشد.

این اصل باید در APIها، پنل مدیریتی و عملیات حساس رعایت شود.

مدیریت Claimهای نقش

برخی IdPها اطلاعات مربوط به گروه یا نقش را در قالب Claim منتقل می‌کنند.

برنامه مقصد باید مشخص کند که کدام Claimها معتبر هستند و چگونه به نقش‌های داخلی تبدیل می‌شوند.

پذیرش نقش مدیریتی بدون بررسی صادرکننده و سیاست‌های مجوزدهی می‌تواند خطرناک باشد.

کنترل تغییر نقش در زمان فعالیت

ممکن است نقش یک کاربر در طول روز تغییر کند، اما نشست او همچنان فعال باشد.

اگر برنامه مجوزها را فقط هنگام ورود دریافت کرده باشد، احتمال استفاده از اطلاعات قدیمی وجود دارد.

برای کاهش این ریسک می‌توان از نشست‌های کوتاه‌تر، بازخوانی مجوزها و سازوکار لغو دسترسی استفاده کرد.

انتخاب راهکار مناسب به حساسیت سرویس بستگی دارد.

مدیریت چرخه عمر کاربران با SSO، SCIM و Provisioning

ورود یکپارچه به‌تنهایی به معنای مدیریت کامل چرخه عمر حساب‌های کاربری نیست.

سازمان باید بتواند ایجاد حساب، تغییر مشخصات، انتقال کارمند و حذف دسترسی‌ها را نیز مدیریت کند.

Provisioning چیست؟

Provisioning فرایند ایجاد و آماده‌سازی حساب کاربری در یک سامانه است.

برای مثال، هنگام استخدام کارمند جدید، ممکن است لازم باشد حساب او در سامانه منابع انسانی، ایمیل سازمانی و مدیریت پروژه ایجاد شود.

این عملیات می‌تواند دستی یا خودکار انجام شود.

نقش SCIM

SCIM یا System for Cross-domain Identity Management استانداردی برای ساده‌سازی مدیریت و تبادل اطلاعات حساب‌های کاربری میان سامانه‌ها است.

با استفاده از راهکارهای سازگار با SCIM، سازمان می‌تواند برخی فرایندهای ایجاد، به‌روزرسانی و غیرفعال‌سازی حساب‌ها را خودکار کند.

اما SCIM یک پروتکل احراز هویت SSO نیست.

تفاوت SSO و SCIM

SSO به کاربر کمک می‌کند به برنامه‌های مختلف وارد شود.

SCIM برای مدیریت چرخه عمر حساب‌ها و اطلاعات مرتبط به کار می‌رود.

استفاده هم‌زمان از این دو می‌تواند مدیریت هویت سازمانی را کامل‌تر کند.

ایجاد حساب در اولین ورود

Just-in-Time Provisioning یا JIT Provisioning به روشی گفته می‌شود که در آن حساب کاربر هنگام اولین ورود معتبر ایجاد می‌شود.

این روش در برخی برنامه‌ها مفید است، اما باید شرایط ایجاد حساب دقیقاً تعریف شود.

نباید هر شناسه هویتی جدید به‌صورت خودکار به حسابی با مجوز بالا تبدیل شود.

لغو دسترسی کارکنان سابق

در زمان خروج کارمند از سازمان، فرایند Offboarding باید شامل بررسی تمام حساب‌ها، نشست‌ها، مجوزها و توکن‌های مرتبط باشد.

غیرفعال‌سازی در IdP اهمیت زیادی دارد، اما برای حذف همه دسترسی‌های باقی‌مانده ممکن است اقدامات تکمیلی لازم باشد.

مزایای استفاده از SSO برای کاربران و سازمان‌ها

ورود یکپارچه در صورت پیاده‌سازی صحیح می‌تواند مزایای عملیاتی و امنیتی مهمی ایجاد کند.

کاهش ورودهای تکراری

کاربران مجبور نیستند برای دسترسی به هر سرویس، فرایند کامل احراز هویت را تکرار کنند.

این ویژگی به‌ویژه در سازمان‌هایی با تعداد زیاد برنامه مفید است.

کاهش پراکندگی رمزهای عبور

وقتی برنامه‌ها از سرویس مرکزی استفاده می‌کنند، نیاز به مدیریت رمز عبور مستقل در همه سامانه‌ها کاهش می‌یابد.

این موضوع می‌تواند استفاده مجدد از رمزهای عبور و مشکلات مربوط به نگهداری آن‌ها را کاهش دهد.

بااین‌حال، SSO به‌تنهایی تضمین نمی‌کند کاربران از رمزهای قوی یا روش‌های بدون رمز استفاده کنند.

مدیریت متمرکز سیاست‌های امنیتی

تیم امنیت می‌تواند سیاست‌های ورود، MFA و محدودیت‌های دسترسی مشروط را در سامانه هویت مدیریت کند.

این قابلیت اعمال استانداردهای مشترک را ساده‌تر می‌کند.

بهبود تجربه کاربری

کاربر با مراحل ورود کمتر و روند مشخص‌تری روبه‌رو می‌شود.

این موضوع می‌تواند خطاهای ورود و درخواست‌های پشتیبانی مربوط به حساب‌های متعدد را کاهش دهد.

افزایش قابلیت حسابرسی

ثبت متمرکز رویدادهای احراز هویت می‌تواند تحلیل فعالیت‌های مشکوک را آسان‌تر کند.

اما برای مشاهده کامل عملیات کاربران همچنان به گزارش‌های برنامه‌های مقصد نیاز است.

بهبود مدیریت سازمانی

فرایندهایی مانند استخدام، تغییر واحد سازمانی و خروج کارکنان با وجود زیرساخت مناسب مدیریت هویت قابل کنترل‌تر می‌شوند.

این مزیت زمانی بیشتر است که SSO با Provisioning و مدیریت مجوزها ترکیب شود.

معایب و محدودیت‌های Single Sign-On

SSO با وجود مزایای متعدد، برای تمام پروژه‌ها بدون هزینه و پیچیدگی نیست.

ایجاد نقطه حساس مرکزی

اگر IdP دچار اختلال شود، احراز هویت کاربران جدید در سرویس‌های متصل ممکن است مختل شود.

به همین دلیل، طراحی High Availability و برنامه بازیابی بحران اهمیت زیادی دارد.

افزایش اهمیت حساب مرکزی

تصاحب حساب مرکزی ممکن است دسترسی به چند سرویس را در معرض خطر قرار دهد.

استفاده از MFA مقاوم در برابر فیشینگ، سیاست‌های ورود تطبیقی و پایش فعالیت‌های غیرعادی می‌تواند این ریسک را کاهش دهد.

پیچیدگی یکپارچه‌سازی

همه برنامه‌ها از یک پروتکل یا مجموعه قابلیت یکسان پشتیبانی نمی‌کنند.

برخی نرم‌افزارهای قدیمی ممکن است برای اتصال به SSO به تغییرات بیشتر نیاز داشته باشند.

هزینه استقرار و نگهداری

پیاده‌سازی SSO ممکن است شامل هزینه سرویس هویت، زیرساخت، مهاجرت کاربران، پشتیبانی و آموزش باشد.

این هزینه‌ها باید در برابر صرفه‌جویی مدیریتی و کاهش ریسک ارزیابی شوند.

دشواری هماهنگی خروج کاربران

پیاده‌سازی خروج سراسری و لغو فوری نشست‌ها می‌تواند پیچیده باشد.

بنابراین طراحی امنیتی نباید فرض کند همه برنامه‌ها به‌صورت خودکار وضعیت نشست یکدیگر را می‌دانند. روش پیاده‌سازی امن SSO در برنامه وب

روش پیاده‌سازی امن SSO در برنامه وب

برای اجرای موفق ورود یکپارچه، بهتر است پروژه به چند مرحله مشخص تقسیم شود.

مرحله اول: شناسایی نیازها و برنامه‌های متصل

ابتدا باید فهرستی از برنامه‌هایی تهیه شود که قرار است از SSO استفاده کنند.

برای هر برنامه لازم است زبان برنامه‌نویسی، فریم‌ورک، روش احراز هویت موجود، تعداد کاربران و حساسیت اطلاعات ثبت شود.

همچنین باید مشخص شود برنامه از SAML، OpenID Connect یا روش دیگری پشتیبانی می‌کند.

مرحله دوم: مدل‌سازی تهدید

Threat Modeling به شناسایی مسیرهای خطرناک در معماری کمک می‌کند.

باید بررسی شود چه اتفاقی می‌افتد اگر حساب مرکزی تصاحب شود، IdP از دسترس خارج شود، توکن افشا شود یا برنامه پاسخ نامعتبر دریافت کند.

نتایج این بررسی مبنای انتخاب کنترل‌های امنیتی خواهند بود.

مرحله سوم: انتخاب ارائه‌دهنده هویت

ارائه‌دهنده هویت باید از استانداردهای مورد نیاز، MFA، مدیریت نشست، ثبت رویداد و سیاست‌های دسترسی پشتیبانی کند.

سازگاری با برنامه‌های فعلی و امکان توسعه در آینده نیز مهم است.

انتخاب محصول صرفاً بر اساس تعداد قابلیت‌های تبلیغاتی توصیه نمی‌شود.

مرحله چهارم: انتخاب پروتکل مناسب

برای بسیاری از برنامه‌های وب مدرن، OpenID Connect گزینه مناسبی است.

در محیط‌های سازمانی دارای نرم‌افزارهای سازگار با SAML، ممکن است استفاده از این استاندارد منطقی‌تر باشد.

در پروژه‌هایی که از چند پروتکل استفاده می‌کنند، باید مرزهای اعتماد و سیاست‌های هر اتصال مشخص باشد.

مرحله پنجم: ثبت امن برنامه‌ها

هر برنامه باید با شناسه و تنظیمات اختصاصی در IdP ثبت شود.

در جریان‌های مبتنی بر OIDC، مقادیر Redirect URI باید دقیق و محدود باشند.

پذیرش مقصدهای بازگشت دلخواه یا الگوهای بیش‌ازحد گسترده می‌تواند خطر امنیتی ایجاد کند.

مرحله ششم: پیاده‌سازی با کتابخانه معتبر

بهتر است از کتابخانه‌ها و SDKهای شناخته‌شده و به‌روزرسانی‌شده استفاده شود.

توسعه دستی اعتبارسنجی رمزنگاری، پردازش SAML یا کنترل توکن‌ها می‌تواند احتمال خطا را افزایش دهد.

پشتیبانی از نسخه‌های استاندارد و سازگاری با محیط اجرا باید بررسی شود.

مرحله هفتم: پیکربندی اعتبارسنجی پاسخ

برنامه باید تمام بررسی‌های لازم را مطابق پروتکل انجام دهد.

در OIDC، امضا، صادرکننده، مخاطب، زمان اعتبار و پارامترهای مرتبط با تراکنش اهمیت دارند.

در SAML، بررسی امضا، مخاطب، مقصد، شرایط زمانی و ارتباط پاسخ با درخواست باید رعایت شود.

مرحله هشتم: طراحی مدیریت حساب داخلی

باید مشخص شود هویت خارجی چگونه به حساب محلی متصل می‌شود.

برای این کار بهتر است از شناسه پایدار و قابل اعتماد استفاده شود.

اتصال خودکار حساب‌ها صرفاً با شباهت ایمیل، بدون کنترل مناسب، می‌تواند خطرناک باشد.

مرحله نهم: فعال‌سازی MFA

برای کاربران حساس و مدیران، استفاده از روش‌های احراز هویت مقاوم در برابر فیشینگ اولویت دارد.

سیاست احراز هویت باید با سطح ریسک سرویس‌ها متناسب باشد.

مرحله دهم: طراحی نشست و خروج از حساب

مدت اعتبار نشست، محدودیت بی‌فعالیتی، خروج محلی و خروج سراسری باید مشخص شوند.

همچنین باید درباره لغو اضطراری دسترسی و رفتار برنامه هنگام قطع ارتباط با IdP تصمیم‌گیری شود.

مرحله یازدهم: آزمایش امنیتی

پیش از انتشار، باید صحت اعتبارسنجی توکن، رفتار با پاسخ نامعتبر، مدیریت حساب‌ها، سیاست‌های دسترسی و امنیت نشست بررسی شود.

آزمون‌ها باید در محیط مجاز و کنترل‌شده انجام شوند.

همچنین عملکرد برنامه هنگام انقضای توکن، اختلال شبکه و تغییر کلیدهای امضا آزمایش شود.

مرحله دوازدهم: انتشار تدریجی و پایش

بهتر است انتقال کاربران به SSO به‌صورت مرحله‌ای انجام شود.

در این مرحله، نرخ موفقیت ورود، خطاهای احراز هویت، درخواست‌های پشتیبانی و رویدادهای مشکوک بررسی شوند.

وجود برنامه بازگشت در صورت اختلال اهمیت دارد.

پیاده‌سازی SSO در وردپرس و ووکامرس

وردپرس و ووکامرس نیز می‌توانند در معماری ورود یکپارچه قرار بگیرند، اما شیوه پیاده‌سازی به نوع کاربران و اهداف سایت بستگی دارد.

SSO برای ورود مدیران وردپرس

در یک سازمان، ممکن است مدیران چند وب‌سایت وردپرسی نیاز داشته باشند با حساب سازمانی وارد شوند.

در چنین شرایطی، استفاده از افزونه یا یکپارچه‌سازی سازگار با OIDC یا SAML می‌تواند مفید باشد.

بااین‌حال، اعتبار افزونه، کیفیت نگهداری، سازگاری با نسخه PHP و امنیت اتصال باید بررسی شود.

امنیت نگاشت نقش‌های وردپرس

یکی از خطرهای مهم، تبدیل اشتباه اطلاعات هویت خارجی به نقش Administrator است.

برای مثال، اگر برنامه بدون بررسی کافی به هر کاربری با ایمیل مشخص نقش مدیریت اختصاص دهد، ممکن است امکان افزایش سطح دسترسی ایجاد شود.

نقش‌های وردپرس باید براساس قواعد مورد اعتماد و با حداقل مجوز لازم تعیین شوند.

SSO برای مشتریان ووکامرس

در فروشگاه‌های اینترنتی ممکن است ورود یکپارچه میان سایت اصلی، پنل مشتریان و سرویس‌های جانبی مفید باشد.

اما اتصال حساب مشتری باید به‌صورت امن انجام شود.

به‌ویژه هنگام استفاده از چند ارائه‌دهنده هویت، نباید مالکیت حساب صرفاً براساس یک آدرس ایمیل تأییدنشده فرض شود.

تأثیر بر سفارش‌ها و اطلاعات مشتریان

پس از احراز هویت موفق، ووکامرس باید اطلاعات سفارش و حساب مشتری را طبق مجوزهای داخلی خودش نمایش دهد.

SSO نباید باعث شود کاربر صرفاً با تغییر شناسه‌ای در درخواست به سفارش فرد دیگری دسترسی پیدا کند.

کنترل دسترسی در سطح هر سفارش و منبع همچنان ضروری است.

روش ورود اضطراری مدیر سایت

اگر سرویس هویت مرکزی دچار اختلال شود، ممکن است مدیر سایت نتواند وارد پیشخوان شود.

به همین دلیل، وجود روش بازیابی اضطراری با کنترل‌های امنیتی قوی اهمیت دارد.

این مسیر نباید به یک درگاه عمومی و بدون محدودیت برای دورزدن SSO تبدیل شود.

بررسی افزونه‌های SSO

هنگام انتخاب افزونه باید مواردی مانند سابقه به‌روزرسانی، امنیت نگهداری توکن، پشتیبانی از پروتکل استاندارد و امکان تنظیم محدود مجوزها بررسی شوند.

در محیط‌های حساس، آزمایش امنیتی افزونه پیش از انتشار توصیه می‌شود.

امنیت SSO در معماری Microservices و Cloud

در برنامه‌های جدید، کاربران ممکن است از طریق یک رابط اصلی به چندین سرویس Backend متصل شوند.

در این معماری، ورود یکپارچه تنها بخشی از مسئله امنیت است.

نقش API Gateway

API Gateway ممکن است مسئول دریافت درخواست‌ها، مسیریابی و اجرای بعضی کنترل‌های امنیتی باشد.

این مؤلفه می‌تواند اعتبار توکن‌ها را بررسی کند، اما هر سرویس باید متناسب با معماری، مجوز دسترسی به منابع خودش را نیز کنترل کند.

اعتماد کامل به احراز هویت در درگاه ورودی، بدون طراحی صحیح مرز اعتماد داخلی، خطرناک است.

ارتباط SSO با APIها

در OIDC، ID Token برای احراز هویت کلاینت استفاده می‌شود.

اما APIها معمولاً به Access Token مناسب نیاز دارند.

هر API باید توکن را براساس مخاطب، صادرکننده، دامنه دسترسی و سیاست‌های امنیتی مربوط اعتبارسنجی کند.

جلوگیری از Token Confusion

Token Confusion زمانی مطرح می‌شود که برنامه انواع توکن یا مخاطبان آن‌ها را به‌درستی تفکیک نکند.

برای مثال، یک API نباید توکنی را که برای سرویس دیگری صادر شده صرفاً به دلیل امضای معتبر بپذیرد.

مدیریت کلیدهای رمزنگاری

کلیدهای امضا و اسرار مرتبط باید در سامانه‌ای امن نگهداری شوند.

چرخش کلیدها یا Key Rotation نیز باید با برنامه‌ریزی انجام شود.

برنامه‌های متصل باید بتوانند تغییر کلیدهای معتبر را بدون پذیرش منابع غیرمعتبر مدیریت کنند.

SSO در Kubernetes

در محیط Kubernetes، سرویس‌های مختلف ممکن است به‌صورت مستقل مقیاس‌پذیر باشند.

سازوکار احراز هویت باید با این معماری سازگار باشد.

استفاده از نشست‌های قابل مدیریت، سامانه ذخیره‌سازی امن و پیکربندی یکپارچه می‌تواند از بروز رفتارهای ناسازگار میان نمونه‌های برنامه جلوگیری کند.

جداسازی کاربران در محیط‌های چندمستاجری

در برنامه‌های Multi-Tenant، چند سازمان ممکن است از یک زیرساخت مشترک استفاده کنند.

در این شرایط، ارتباط هویت کاربر با سازمان مربوط باید دقیقاً بررسی شود.

وجود یک ایمیل مشابه یا شناسه کاربر بدون توجه به شناسه سازمان نباید موجب اتصال به حساب اشتباه شود.

SSO در برابر حملات Brute Force، Phishing و Account Takeover

ورود یکپارچه می‌تواند سطح مدیریت امنیت را بهبود دهد، اما همچنان در معرض حملات مرتبط با حساب‌های کاربری است.

مقابله با Brute Force

در حملات Brute Force، مهاجم تلاش می‌کند با آزمودن تعداد زیادی اطلاعات ورود، حساب معتبر پیدا کند.

تمرکز ورود در IdP می‌تواند امکان اعمال سیاست‌هایی مانند Rate Limiting، تشخیص فعالیت غیرعادی و محدودسازی تلاش‌ها را فراهم کند.

بااین‌حال، این قابلیت‌ها باید به‌صورت واقعی فعال و تنظیم شوند.

محافظت در برابر Credential Stuffing

Credential Stuffing به استفاده خودکار از اطلاعات ورود افشاشده در سرویس‌های دیگر گفته می‌شود.

اگر کاربران از رمزهای تکراری استفاده کنند، خطر بیشتر می‌شود.

احراز هویت مقاوم در برابر فیشینگ، تشخیص تلاش‌های غیرعادی و استفاده از روش‌های بدون رمز می‌توانند به کاهش این ریسک کمک کنند.

کاهش خطر فیشینگ

صفحه ورود مرکزی ممکن است هدف جذابی برای مهاجمان باشد.

استفاده از Passkey یا کلید امنیتی مبتنی بر WebAuthn می‌تواند محافظت مؤثرتری در برابر صفحات جعلی فراهم کند.

همچنین کاربران باید با دامنه رسمی ورود سازمانی آشنا باشند.

تشخیص تصاحب حساب

Account Takeover زمانی رخ می‌دهد که مهاجم کنترل حساب کاربری را به دست آورد.

سامانه هویت باید رویدادهایی مانند تغییر غیرمنتظره عوامل احراز هویت، ورود از دستگاه ناشناخته و تلاش‌های غیرعادی را پایش کند.

اما تصمیم‌گیری صرفاً بر اساس تغییر IP یا مکان جغرافیایی می‌تواند خطا ایجاد کند.

بهتر است چند نشانه در کنار یکدیگر بررسی شوند.

مانیتورینگ و ثبت رویدادهای امنیتی SSO

ورود یکپارچه بدون نظارت مناسب می‌تواند باعث شود تیم امنیت از فعالیت‌های مشکوک در نقطه مرکزی بی‌اطلاع بماند.

چه رویدادهایی باید ثبت شوند؟

سامانه باید رویدادهای مهم مانند ورود موفق، ورود ناموفق، تغییر عوامل MFA، مسدودشدن حساب و تغییر تنظیمات امنیتی را ثبت کند.

همچنین رویدادهای مرتبط با تغییر مجوزها، ثبت برنامه جدید و تغییر کلیدهای اعتماد اهمیت دارند.

ارتباط با SIEM

SIEM یا Security Information and Event Management سامانه‌ای برای جمع‌آوری و تحلیل رویدادهای امنیتی است.

ارسال گزارش‌های IdP و برنامه‌های متصل به SIEM می‌تواند به شناسایی الگوهای مشکوک کمک کند.

برای مثال، ورود غیرعادی به حساب مدیریتی و سپس تلاش برای تغییر تنظیمات چند سرویس می‌تواند نیازمند بررسی امنیتی باشد.

محافظت از داده‌های گزارش

گزارش‌های امنیتی نباید شامل رمز عبور، کلید خصوصی، توکن کامل یا اطلاعات حساس غیرضروری باشند.

برای کاهش خطر باید از حذف یا پوشاندن داده‌های محرمانه استفاده شود.

نگهداری و دسترسی به گزارش‌ها

مدت نگهداری گزارش‌ها باید براساس نیاز عملیاتی، قوانین مرتبط و سیاست حریم خصوصی تعیین شود.

همچنین دسترسی به گزارش‌های ورود باید محدود و قابل حسابرسی باشد.

همبستگی رویدادها

بهتر است رویدادهای مربوط به یک تراکنش با شناسه ارتباطی مناسب قابل پیگیری باشند.

این قابلیت به تیم امنیت کمک می‌کند میان ورود مرکزی و فعالیت بعدی کاربر در برنامه مقصد ارتباط برقرار کند.

چگونه امنیت SSO را آزمایش کنیم؟

آزمون امنیتی ورود یکپارچه باید بر رفتار واقعی پروتکل و کنترل‌های برنامه تمرکز داشته باشد.

هدف، اطمینان از آن است که پاسخ‌های نامعتبر پذیرفته نمی‌شوند و کاربران تنها به منابع مجاز دسترسی دارند.

بررسی اعتبارسنجی توکن

باید اطمینان حاصل شود که برنامه توکن‌های منقضی‌شده، نامعتبر یا صادرشده برای مخاطب دیگر را رد می‌کند.

همچنین اعتبارسنجی امضا باید به‌درستی انجام شود.

بررسی امنیت Redirect URI

در جریان‌های مبتنی بر OIDC، مقصدهای بازگشت باید محدود به آدرس‌های ثبت‌شده و معتبر باشند.

برنامه نباید امکان بازگشت آزاد به مقصدهای کنترل‌نشده فراهم کند.

آزمون مدیریت Session

باید بررسی شود که شناسه نشست پس از ورود تغییر می‌کند، خروج از حساب نشست را باطل می‌کند و محدودیت‌های زمانی به‌درستی اعمال می‌شوند.

آزمون مجوزهای دسترسی

حساب‌های دارای نقش متفاوت باید تنها به منابع مجاز دسترسی داشته باشند.

این آزمایش باید در سطح رابط کاربری و API انجام شود.

آزمون خروج سراسری

لازم است مشخص شود که خروج از IdP یا برنامه مقصد چه تأثیری بر نشست‌های دیگر دارد.

رفتار واقعی باید با سیاست امنیتی مورد انتظار مقایسه شود.

آزمون قطع ارتباط با IdP

برنامه باید در شرایط اختلال سرویس هویت رفتار مشخص و قابل پیش‌بینی داشته باشد.

وجود نشست معتبر محلی، درخواست ورود جدید و عملیات مدیریتی حساس ممکن است به سیاست‌های متفاوتی نیاز داشته باشند.

آزمون تغییر کلیدها

فرایند Key Rotation باید آزمایش شود تا برنامه بدون اختلال غیرضروری، کلیدهای معتبر جدید را بپذیرد و کلیدهای نامعتبر یا منسوخ را رد کند.

چک‌لیست امنیت پیاده‌سازی SSO

پیش از انتشار سامانه ورود یکپارچه، بهتر است وضعیت کنترل‌های زیر بررسی و مستند شود.

معماری و اعتماد: ارائه‌دهنده هویت معتبر و مشخص است؛ برنامه‌های متصل شناسایی شده‌اند؛ پروتکل مناسب انتخاب شده است؛ مرز اعتماد میان سامانه‌ها تعریف شده است.

امنیت پروتکل: امضا و اطلاعات توکن اعتبارسنجی می‌شوند؛ صادرکننده و مخاطب بررسی می‌شوند؛ Redirect URI محدود است؛ کنترل‌های state، nonce و PKCE مطابق جریان انتخاب‌شده استفاده می‌شوند.

احراز هویت: MFA برای حساب‌های حساس فعال است؛ روش‌های مقاوم در برابر فیشینگ در اولویت هستند؛ بازیابی حساب به‌اندازه ورود اصلی محافظت می‌شود؛ تغییر عوامل MFA ثبت و کنترل می‌شود.

مدیریت نشست: شناسه نشست امن است؛ Cookieها تنظیمات مناسب دارند؛ زمان انقضا مشخص است؛ خروج از حساب و لغو دسترسی آزمایش شده‌اند.

کنترل مجوزها: نقش‌ها به‌درستی نگاشت می‌شوند؛ حساب‌ها بدون تأیید مناسب متصل نمی‌شوند؛ حداقل دسترسی رعایت می‌شود؛ تغییر نقش در نشست‌های فعال مدیریت می‌شود.

پایش و پایداری: رویدادها ثبت می‌شوند؛ گزارش‌ها فاقد اطلاعات محرمانه غیرضروری هستند؛ سناریوهای قطعی IdP آزمایش شده‌اند؛ برنامه بازیابی و مدیریت اضطراری وجود دارد.

این چک‌لیست نقطه شروع مناسبی برای ارزیابی است، اما جایگزین تحلیل ریسک و آزمون امنیتی تخصصی نیست.

اشتباهات رایج در پیاده‌سازی SSO

بسیاری از مشکلات امنیتی ورود یکپارچه ناشی از برداشت اشتباه از عملکرد پروتکل‌ها یا پیکربندی ناقص هستند.

اشتباه گرفتن OAuth با احراز هویت

OAuth 2.0 به‌تنهایی برای اثبات هویت کاربر طراحی نشده است.

برای احراز هویت استاندارد مبتنی بر این چارچوب، معمولاً باید از OpenID Connect استفاده شود.

پذیرش توکن بدون اعتبارسنجی کامل

بررسی ظاهری JWT یا استخراج اطلاعات آن به معنای معتبر بودن توکن نیست.

امضا، صادرکننده، مخاطب، زمان و سایر شرایط لازم باید بررسی شوند.

استفاده از ایمیل به‌عنوان تنها شناسه هویت

ایمیل ممکن است تغییر کند یا در شرایط خاص میان حساب‌ها جابه‌جا شود.

برای اتصال پایدار حساب‌ها، بهتر است از شناسه مورد اعتماد و اختصاصی ارائه‌دهنده هویت استفاده شود.

اعطای نقش مدیریتی به‌صورت خودکار

نگاشت نادرست گروه‌ها یا Claimها ممکن است موجب افزایش غیرمجاز سطح دسترسی شود.

نقش مدیریتی باید تحت سیاست مشخص و قابل حسابرسی اختصاص پیدا کند.

فعال نکردن MFA برای حساب مرکزی

اتکا به رمز عبور، به‌ویژه برای حساب‌های مدیریتی، خطر تصاحب حساب را افزایش می‌دهد.

استفاده از روش‌های مقاوم در برابر فیشینگ اهمیت زیادی دارد.

نادیده گرفتن مدیریت نشست

امنیت ورود اولیه کافی نیست.

نشست‌های طولانی، Cookieهای ناامن یا خروج ناقص می‌توانند زمینه سوءاستفاده ایجاد کنند.

نبود برنامه مدیریت بحران

اگر IdP دچار اختلال شود، فرایند ورود ممکن است متوقف شود.

سازمان باید پیش از وقوع مشکل، روش مدیریت دسترسی اضطراری و بازیابی سرویس را مشخص کرده باشد.

استفاده از کتابخانه‌های قدیمی

کتابخانه‌های احراز هویت و پردازش توکن ممکن است دارای آسیب‌پذیری یا نقص پیاده‌سازی باشند.

به‌روزرسانی و بررسی امنیت وابستگی‌ها باید بخشی از فرایند نگهداری باشد.

انتخاب بهترین راهکار SSO برای یک سازمان

انتخاب راهکار مناسب باید براساس نیاز فنی و امنیتی انجام شود، نه صرفاً شهرت محصول.

بررسی سازگاری

ابتدا باید مشخص شود کدام برنامه‌ها از OIDC یا SAML پشتیبانی می‌کنند.

اگر بخش مهمی از زیرساخت شامل نرم‌افزارهای قدیمی باشد، سازگاری با پروتکل‌های سازمانی اهمیت بیشتری دارد.

ارزیابی قابلیت‌های امنیتی

پشتیبانی از MFA، Passkey، سیاست‌های دسترسی مشروط، ثبت رویداد، مدیریت نشست و چرخش کلید باید بررسی شود.

همچنین لازم است امکان محدودسازی دسترسی مدیریتی و مدیریت اضطراری وجود داشته باشد.

انتخاب راهکار ابری یا داخلی

در راهکار Cloud-Based، بخشی از مسئولیت زیرساخت برعهده ارائه‌دهنده سرویس است.

در راهکار Self-Hosted، سازمان کنترل بیشتری بر زیرساخت دارد، اما مسئولیت نگهداری، به‌روزرسانی و دسترس‌پذیری نیز بیشتر می‌شود.

هیچ‌یک به‌صورت مطلق امن‌تر نیستند.

تصمیم باید براساس مدل تهدید، مقررات، توان فنی و نیاز سازمان گرفته شود.

بررسی هزینه واقعی

هزینه راهکار تنها شامل اشتراک یا مجوز نرم‌افزار نیست.

هزینه مهاجرت، نگهداری، آموزش، پشتیبانی، یکپارچه‌سازی و مدیریت رخدادهای احتمالی نیز باید محاسبه شود.

ارزیابی استقلال و امکان مهاجرت

سازمان باید بررسی کند در صورت تغییر تأمین‌کننده هویت، امکان انتقال کاربران و برنامه‌ها وجود دارد یا خیر.

استفاده از استانداردهای باز می‌تواند به کاهش وابستگی به یک محصول کمک کند.

سؤالات متداول درباره SSO و امنیت Single Sign-On

SSO چیست و چه کاربردی دارد؟

SSO یا Single Sign-On روشی برای ورود یکپارچه به چند برنامه با استفاده از یک سامانه احراز هویت مشترک است. این فناوری تعداد ورودهای تکراری را کاهش می‌دهد و امکان مدیریت متمرکز سیاست‌های امنیتی را فراهم می‌کند. کاربرد اصلی آن در سازمان‌ها، سرویس‌های ابری و مجموعه برنامه‌های مرتبط است.

آیا SSO امنیت را افزایش می‌دهد؟

SSO در صورت پیاده‌سازی صحیح می‌تواند امنیت را بهبود دهد؛ زیرا امکان اعمال متمرکز MFA، مدیریت هویت و ثبت رویدادها را فراهم می‌کند. بااین‌حال، تمرکز احراز هویت باعث افزایش حساسیت حساب مرکزی می‌شود و نیاز به کنترل‌های امنیتی قوی دارد.

تفاوت SSO و OAuth چیست؟

SSO یک الگوی ورود به چند برنامه است، اما OAuth 2.0 چارچوبی برای اعطای دسترسی مجاز به منابع محسوب می‌شود. برای پیاده‌سازی احراز هویت مبتنی بر OAuth معمولاً از OpenID Connect استفاده می‌شود. این دو مفهوم یکسان نیستند.

آیا SSO همان OpenID Connect است؟

خیر. OpenID Connect یک پروتکل استاندارد احراز هویت است که می‌تواند برای پیاده‌سازی SSO استفاده شود. ورود یکپارچه با روش‌های دیگری مانند SAML نیز قابل انجام است.

تفاوت SAML و OIDC چیست؟

SAML از ساختارهای مبتنی بر XML برای انتقال اطلاعات احراز هویت استفاده می‌کند و در سامانه‌های سازمانی رایج است. OIDC مبتنی بر OAuth 2.0 است و در بسیاری از برنامه‌های وب و موبایل مدرن کاربرد دارد. امنیت هر دو به پیاده‌سازی صحیح بستگی دارد.

آیا SSO به یک رمز عبور برای تمام برنامه‌ها نیاز دارد؟

خیر. در معماری استاندارد، کاربر نزد ارائه‌دهنده هویت احراز هویت می‌شود و برنامه‌های متصل نتیجه معتبر این فرایند را دریافت می‌کنند. برنامه‌ها معمولاً نیازی به دریافت رمز عبور اصلی کاربر ندارند.

آیا SSO بدون رمز عبور امکان‌پذیر است؟

بله. اگر ارائه‌دهنده هویت از روش‌هایی مانند Passkey یا کلید امنیتی پشتیبانی کند، ورود یکپارچه می‌تواند بدون رمز عبور سنتی انجام شود. امنیت این روش به پیاده‌سازی و پیکربندی آن وابسته است.

آیا SSO از حملات فیشینگ جلوگیری می‌کند؟

SSO به‌تنهایی مانع فیشینگ نمی‌شود. حتی ممکن است حساب مرکزی هدف مهم‌تری برای مهاجمان باشد. استفاده از Passkey و احراز هویت مقاوم در برابر فیشینگ می‌تواند خطر را به میزان قابل توجهی کاهش دهد.

آیا SSO برای وردپرس مناسب است؟

بله، درصورتی‌که زیرساخت و افزونه مورد استفاده از پروتکل استاندارد و پیاده‌سازی امن پشتیبانی کنند. هنگام استفاده در وردپرس باید نگاشت نقش‌ها، امنیت حساب مدیر و امکان بازیابی اضطراری بررسی شود.

آیا SSO و MFA یکسان هستند؟

خیر. SSO فرایند ورود به چند برنامه را یکپارچه می‌کند، اما MFA به استفاده از چند عامل مستقل برای تأیید هویت اشاره دارد. این دو فناوری می‌توانند در کنار یکدیگر استفاده شوند.

آیا خروج از SSO باعث خروج از تمام برنامه‌ها می‌شود؟

نه لزوماً. خروج از یک برنامه ممکن است فقط نشست همان برنامه را پایان دهد. خروج سراسری به پشتیبانی پروتکل، تنظیمات IdP و همکاری برنامه‌های متصل بستگی دارد.

آیا با قطع‌شدن سرور SSO تمام کاربران خارج می‌شوند؟

لزوماً خیر. بعضی نشست‌های محلی معتبر ممکن است تا پایان مدت اعتبار خود فعال بمانند. اما ورودهای جدید یا تمدید برخی نشست‌ها ممکن است دچار اختلال شوند. این رفتار به معماری و سیاست امنیتی بستگی دارد.

آیا SSO جایگزین کنترل دسترسی می‌شود؟

خیر. ورود یکپارچه هویت کاربر را مشخص می‌کند، اما هر برنامه همچنان باید مجوز او برای مشاهده اطلاعات و انجام عملیات را بررسی کند. کنترل دسترسی در سطح منابع و APIها ضروری است.

آیا استفاده از SSO برای فروشگاه اینترنتی مفید است؟

اگر فروشگاه از چند سرویس مرتبط مانند پنل مشتریان، سیستم پشتیبانی و باشگاه مشتریان استفاده کند، SSO می‌تواند تجربه ورود را ساده‌تر کند. اما باید امنیت اتصال حساب‌ها، مجوز مشاهده سفارش‌ها و نشست مشتریان حفظ شود.

مهم‌ترین نکته در امنیت SSO چیست؟

محافظت از ارائه‌دهنده هویت، استفاده از MFA مقاوم در برابر فیشینگ، اعتبارسنجی کامل توکن‌ها، مدیریت امن نشست‌ها و کنترل دقیق مجوزها مهم‌ترین اصول هستند. هیچ‌کدام از این کنترل‌ها نباید به‌تنهایی کافی فرض شوند.

جمع‌بندی: چگونه یک سامانه SSO امن پیاده‌سازی کنیم؟

SSO یا Single Sign-On یکی از راهکارهای مهم مدیریت هویت در برنامه‌های وب و سامانه‌های سازمانی است.

این فناوری با متمرکزکردن فرایند احراز هویت، امکان ورود آسان‌تر کاربران به چند سرویس مختلف را فراهم می‌کند.

کاهش ورودهای تکراری، مدیریت ساده‌تر حساب‌ها، اعمال متمرکز سیاست‌های امنیتی و بهبود تجربه کاربری از مهم‌ترین مزایای آن هستند.

اما امنیت SSO تنها به نصب یک سرویس هویت یا اتصال چند برنامه محدود نمی‌شود.

انتخاب صحیح پروتکل، اعتبارسنجی کامل پاسخ‌های احراز هویت، محافظت از کلیدهای رمزنگاری، مدیریت نشست‌ها و اعمال حداقل دسترسی برای جلوگیری از سوءاستفاده ضروری هستند.

همچنین حساب مرکزی باید با روش‌های احراز هویت قوی، ترجیحاً مقاوم در برابر فیشینگ، محافظت شود.

در معماری‌هایی که از OpenID Connect استفاده می‌کنند، به‌کارگیری جریان مناسب همراه PKCE و بررسی دقیق ID Token اهمیت دارد.

در سامانه‌های مبتنی بر SAML نیز اعتبارسنجی امضا، مقصد، مخاطب و محدودیت‌های زمانی باید به‌صورت کامل انجام شود.

مدیریت صحیح خروج از حساب، غیرفعال‌سازی کاربران، مانیتورینگ رویدادها و وجود برنامه بازیابی بحران از دیگر بخش‌های مهم امنیت ورود یکپارچه هستند.

برای سایت‌های وردپرسی و فروشگاه‌های ووکامرسی نیز باید به سازگاری افزونه‌ها، نگاشت ایمن نقش‌ها و حفظ کنترل دسترسی کاربران توجه شود.

در نهایت، یک پیاده‌سازی موفق SSO باید میان سادگی ورود، امنیت هویت، مدیریت دقیق مجوزها و پایداری سرویس تعادل برقرار کند.

ورود یکپارچه زمانی واقعاً ارزشمند است که در کنار امنیت برنامه، آزمون‌های دوره‌ای، مدیریت آسیب‌پذیری‌ها و پایش مداوم مورد استفاده قرار گیرد.

مطالب مرتبط