احراز هویت SSO چیست
![](https://bytegate.io/wp-content/uploads/asli-1-780x470.webp)
SSO به معنای “Single Sign-On” است که به یک روش احراز هویت مرکزی اشاره دارد. در سیستمهای SSO، کاربران میتوانند با استفاده از یک نام کاربری و گذرواژه یک بار وارد کلیه سرویسها و برنامههای مختلف شوند بدون اینکه برای هر سرویس جداگانه وارد شوند. با ورود یک بار به سیستم SSO، کاربر میتواند به طور خودکار به سرویسهای دیگری که از همان سیستم SSO پشتیبانی میکنند دسترسی پیدا کند.
SSO در سازمانها و شرکتهای بزرگ از جمله محصولات نرمافزاری و آنلاین استفاده میشود. با استفاده از SSO، کاربران نیازی ندارند که برای هر برنامه یا سرویس جدید وارد شوند و اطلاعات احراز هویت خود را وارد کنند. این مزیت به کاربران کمک میکند تا زمان و تلاش خود را برای مدیریت نام کاربری و گذرواژههای مختلف کاهش دهند و همچنین بهبود امنیت را فراهم میکند.
یک سیستم SSO معمولاً از پروتکلهای مانند SAML (Security Assertion Markup Language) و OpenID Connect برای تبادل اطلاعات احراز هویت بین سرویسها استفاده میکند. این پروتکلها به ارائه دهندگان احراز هویت و سرویسهای خدمات میکنند تا بتوانند با یکدیگر اطلاعات احراز هویت کاربران را تبادل کنند و به کاربران اجازه دهند بدون نیاز به ورود مجدد به سرویسها دسترسی داشته باشند.
SSO چگونه کار میکند؟
سیستم SSO به صورت کلی به تعدادی مرحله عمل میکند. در زیر توضیح مراحل اصلی عملکرد یک سیستم SSO آمده است:
احراز هویت اولیه: کاربر با وارد کردن نام کاربری و رمز عبور خود در صفحه ورود به سیستم احراز هویت میشود. این احراز هویت میتواند توسط پروتکلهای رایج مانند LDAP (Lightweight Directory Access Protocol)، از طریق پایگاه دادههای محلی یا با استفاده از سرویسهای ابری انجام شود.
صدور توکن: پس از احراز هویت موفقیتآمیز، سیستم SSO یک توکن ایجاد میکند. این توکن حاوی اطلاعات مربوط به احراز هویت کاربر است. معمولاً این توکن با استفاده از پروتکلهای مانند SAML یا JWT (JSON Web Token) ایجاد میشود.
ارسال توکن: توکن ایجاد شده به کاربر ارسال میشود. این ارسال میتواند به صورت پاسخ به درخواست ورود موفقیتآمیز یا از طریق ارسال اطلاعات به مرورگر کاربر باشد.
دسترسی به سرویسها: وقتی کاربر به سرویس دیگری درخواست دسترسی میدهد، سیستم SSO بررسی میکند که آیا کاربر در حال حاضر وارد شده است یا خیر. اگر کاربر وارد شده باشد، توکن احراز هویت را به سرویس مورد نظر ارسال کرده و سرویس قادر خواهد بود توکن را بررسی کند و احراز هویت کاربر را تأیید کند. در نتیجه، کاربر بدون نیاز به ورود مجدد به سرویس دسترسی خواهد داشت.
بهروزرسانی توکن: در برخی موارد، توکن احراز هویت ممکن است مدت زمان مشخصی داشته باشد. در این صورت، سیستم SSO برای تمدید توکن، کاربر را به صفحه ورود معرفی میکند تا مجدداً احراز هویت کند و توکن جدیدی دریافت کند. این کار باعث میشود که کاربران پس از مدت زمان مشخصی دوباره وارد شوند و احراز هویت خود را تأیید کنند.
با استفاده از این مراحل، سیستم SSO به کاربران اجازه میدهد با یک بار ورود به سیستم، به چندین سرویس و برنامه دسترسی داشته باشند، بدون نیاز به وارد کردن مجدد نام کاربری و رمز عبور برای هر سرویس جداگانه. این میتواند بهبود امنیت، افزایش راحتی کاربران و کاهش هزینهها در مدیریت احراز هویت باشد.
آیا SSO میتواند به افزایش امنیت دسترسیها کمک کند؟
سیستم SSO میتواند به افزایش امنیت دسترسیها کمک کند. در زیر توضیحاتی درباره نحوه کمک سیستم SSO به امنیت دسترسیها آمده است:
کاهش نیاز به گذرواژههای متعدد: با استفاده از سیستم SSO، کاربران نیازی به حفظ و مدیریت گذرواژههای متعدد برای هر سرویس جداگانه ندارند. این موضوع میتواند بهبود امنیت را به ارمغان بیاورد، زیرا کاربران تمایل کمتری به استفاده از گذرواژههای ضعیف یا تکراری دارند و احتمال نفوذ به حساب کاربریها کاهش مییابد.
قابلیت احراز هویت قویتر: سیستم SSO میتواند از پروتکلهای احراز هویت قوی مانند SAML استفاده کند. این پروتکلها از فرآیندهای مبتنی بر تبادل اطلاعات رمزنگاری شده بین سرویسها و سرورهای احراز هویت استفاده میکنند. این موضوع باعث افزایش امنیت در ارتباط بین سرویسها و جلوگیری از حملات مانند سرقت اطلاعات احراز هویت میشود.
مدیریت مرکزی: سیستم SSO اجازه میدهد که احراز هویت کاربران مرکزی و تحت کنترل قرار گیرد. این به مدیران سازمان امکان میدهد تا براحتی از طریق یک مرکز کنترل کاربران را مدیریت و سطوح دسترسی آنها را تنظیم کنند. با این روش، میتوان بهبود امنیت را از طریق کاهش امکان خطاهای انسانی در مدیریت حساب کاربری و احراز هویت دستی داشت.
دسترسی و ترکیب شدن با سیستمهای امنیتی موجود: سیستم SSO قابلیت ادغام با سیستمهای امنیتی موجود در سازمان را دارد. این ادغام میتواند شامل اعمال قوانین و محدودیتهای امنیتی، مانیتورینگ فعالیتها و تشخیص تهدیدها باشد. با این طرح، سیستم SSO میتواند به ارتقاء امنیت کلی سازمان کمک کند.
با این حال، برای اطمینان از امنیت کامل، لازم است مواردی مانند استفاده از پروتکلهای احراز هویت قوی، استفاده از روشهای رمزنگاری قوی، مانیتورینگ فعالیتها، بروزرسانی منظم سیستمها و آموزش کاربران درباره مسائل امنیتی نیز مدنظر قرار گیرند.
پروتکلهای مختلف SSO
سیستم SSO (Single Sign-On) از پروتکلهای مختلفی برای احراز هویت و مدیریت دسترسی استفاده میکند. در زیر، برخی از پروتکلهای معروف SSO ذکر شده است:
- SAML (Security Assertion Markup Language): SAML یک پروتکل مبتنی بر XML است که برای تبادل اطلاعات احراز هویت بین سرویسدهندهها (Service Providers) و سرورهای احراز هویت (Identity Providers) استفاده میشود. با استفاده از SAML، کاربران میتوانند با یک بار وارد کردن اطلاعات احراز هویت خود، به چندین سرویس مختلف دسترسی پیدا کنند.
- OpenID Connect: OpenID Connect یک پروتکل احراز هویت مبتنی بر OAuth 2.0 است که امکان احراز هویت و اعتبارسنجی کاربران را فراهم میکند. این پروتکل امکان اشتراک گذاری اطلاعات احراز هویت بین سرویسدهندهها و سرورهای احراز هویت را فراهم میکند و به کاربران اجازه میدهد با یک بار وارد کردن مشخصات خود، به چندین سرویس مختلف دسترسی داشته باشند.
- OAuth (Open Authorization): OAuth یک پروتکل احراز هویت و اعتبارسنجی مبتنی بر توکن است که برای اعتبارسنجی دسترسی کاربران به منابع محافظت شده توسط سرویسهای مختلف استفاده میشود. با استفاده از OAuth، کاربران میتوانند اجازه دسترسی به منابع خود را به سرویسهای دیگر بدهند، بدون اینکه محتوای احراز هویت خود را برای آن سرویس فاش کنند.
- Kerberos: Kerberos یک پروتکل شبکه است که برای احراز هویت و اعتبارسنجی کاربران در یک شبکه توزیع شده استفاده میشود. این پروتکل بر اساس توزیع بلادرنگ توکنهای اعتبارسنجی (Ticket) عمل میکند و به کاربران اجازه میدهد با یک بار احراز هویت، به منابع مختلف در شبکه دسترسی پیدا کنند.
انواع SSO و کاربردهای آن چیست؟
SSO (Single Sign-On) در واقع یک رویکرد است که به کاربران اجازه میدهد با یک بار وارد کردن اطلاعات احراز هویت، به چندین سرویس و برنامه دسترسی پیدا کنند. این رویکرد در بسیاری از سازمانها و سیستمهای IT به منظور سهولت استفاده کاربران و بهبود امنیت استفاده میشود. در زیر، به برخی از انواع SSO و کاربردهای آن اشاره میکنم:
Enterprise SSO: این نوع SSO برای سازمانها و شرکتها استفاده میشود تا کاربران درون سازمانی به سادگی به برنامهها و سرویسهای مختلف دسترسی داشته باشند. با استفاده از یک بار وارد کردن احراز هویت، کاربران میتوانند به سیستمهای داخلی مانند سیستمهای مدیریت منابع انسانی (HRM)، سیستمهای مالی، سیستمهای مدیریت ارتباط با مشتریان (CRM) و غیره دسترسی پیدا کنند.
Web SSO: این نوع SSO برای وب سایتها و برنامههای وب استفاده میشود. کاربران با وارد کردن احراز هویت یک باره، به چندین وب سایت و برنامه مختلف دسترسی دارند. به عنوان مثال، با ورود به حساب کاربری Google، کاربران میتوانند به سرویسهایی مانند Gmail، Google Drive، YouTube و سایر خدمات Google دسترسی پیدا کنند.
Mobile SSO: این نوع SSO برای برنامهها و سرویسهای موبایلی استفاده میشود. کاربران با یک بار وارد کردن اطلاعات احراز هویت، به برنامههای مختلف در دستگاه موبایل خود دسترسی دارند. به عنوان مثال، با ورود به حساب کاربری Apple ID، کاربران میتوانند به برنامههایی مانند App Store، iCloud، Apple Music و سایر برنامهها و خدمات Apple دسترسی پیدا کنند.
Federated SSO: این نوع SSO برای ارتباط بین سازمانها و سرویسهای مختلف استفاده میشود. با استفاده از پروتکلهای مانند SAML، کاربران میتوانند با یک بار وارد کردن احراز هویت، به سرویسها و برنامههایی که توسط سازمانهای دیگر ارائه میشوند، دسترسی پیدا کنند. به عنوان مثال، یک کاربر میتوتواند با استفاده از احراز هویت در سیستم داخلی سازمان خود، به سرویسها و برنامههای مختلفی که توسط شرکای تجاری یا سازمانهای دیگر ارائه میشوند، دسترسی داشته باشد.
Social Media SSO: این نوع SSO بر اساس احراز هویت از طریق شبکههای اجتماعی مانند Facebook، Twitter یا LinkedIn انجام میشود. با استفاده از حساب کاربری در یک شبکه اجتماعی، کاربران میتوانند به برنامهها و سرویسهای مختلف دسترسی پیدا کنند. این روش معمولاً در برنامهها و وب سایتهایی که به اشتراک گذاری اطلاعات و اتصال به شبکههای اجتماعی نیاز دارند، استفاده میشود.
Cross-domain SSO: این نوع SSO برای دسترسی به برنامهها و سرویسهای مختلفی استفاده میشود که در دامینهای مختلف قرار دارند. با وارد کردن احراز هویت یک باره، کاربران میتوانند به سرویسها و برنامههای مختلف در دامینهای مختلف دسترسی داشته باشند. این روش معمولاً در سیستمهای بزرگ و پیچیده با بخشهای مختلف و مستقل استفاده میشود.
اجرا SSO با PHP
برای اجرای SSO (Single Sign-On) با استفاده از PHP، میتوانید از پروتکل SAML (Security Assertion Markup Language) استفاده کنید. در اینجا، مراحل اجرای SSO را با استفاده از PHP و SAML توضیح میدهم:
- نصب کتابخانه OneLogin PHP Toolkit:
برای شروع، باید کتابخانه OneLogin PHP Toolkit را در پروژه خود نصب کنید. میتوانید این کتابخانه را از آدرس زیر دریافت کنید:
https://github.com/onelogin/php-saml - تنظیمات فایل پیکربندی:
سپس، باید فایل تنظیمات پیکربندی را برای اتصال به سرویسدهنده احراز هویت و سرویسدهنده سرویس پیادهسازی کنید. این فایل شامل اطلاعات مانند آدرسها، کلیدها و نامهای کاربری مربوط به این سرویسها است. - پیادهسازی سرویسدهنده سرویس (Service Provider):
باید سرویسدهنده سرویس را پیادهسازی کنید. این بخش شامل ایجاد یک کلاس PHP برای سرویسدهنده سرویس است. در این کلاس، شما باید تنظیمات، ورودیها و خروجیهای مربوط به SSO را ایجاد کنید.
require_once 'vendor/autoload.php';
use OneLogin\Saml2\Auth;
$auth = new Auth($settings);
if (!$auth->isAuthenticated()) {
$auth->login();
}
// اگر کاربر وارد شده است، میتوانید اطلاعات کاربر را دریافت کنید
$attributes = $auth->getAttributes();
$nameID = $auth->getNameId();
- تعامل با سرویسدهنده احراز هویت:
در این مرحله، باید تعامل با سرویسدهنده احراز هویت را پیادهسازی کنید. این شامل ارسال درخواست احراز هویت به سرویسدهنده احراز هویت و دریافت تأییدیههای لازم برای ورود کاربر به سیستم است.
$auth->login();
- تعامل با سرویسدهنده سرویس:
در این مرحله، باید تعامل با سرویسدهنده سرویس را پیادهسازی کنید. این شامل دریافت اطلاعات کاربر و ایجاد جلسه (session) برای کاربر است.
// اگر کاربر وارد شده است، میتوانید اطلاعات کاربر را دریافت کنید
$attributes = $auth->getAttributes();
$nameID = $auth->getNameId();
- اعتبارسنجی احراز هویت:
قبل از اعتبارسنجی هر درخواست از سرویسدهنده سرویس، باید اعتبارسنجی احراز هویت را اندامه دهم:
$auth->processResponse();
if ($auth->isAuthenticated()) {
// کاربر با موفقیت احراز هویت شده است
} else {
// خطا در احراز هویت کاربر
}
- تنظیمات سرویسدهنده احراز هویت:
در این مرحله باید تنظیمات سرویسدهنده احراز هویت را انجام دهید. این شامل تنظیمات مانند آدرس سرویسدهنده SAML، کلیدهای رمزنگاری و تنظیمات امنیتی است.
$settings = [
'strict' => true,
'sp' => [
'entityId' => 'https://example.com/myservice',
'assertionConsumerService' => [
'url' => 'https://example.com/myservice/acs',
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
],
'singleLogoutService' => [
'url' => 'https://example.com/myservice/sls',
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
],
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
// سایر تنظیمات
],
];
$auth = new Auth($settings);
این مراحل به عنوان یک راهنمای کلی برای اجرای SSO با استفاده از PHP و SAML است. برای هر نیاز خاص، ممکن است نیاز به تنظیمات و پیکربندی های اضافی داشته باشید. همچنین، ممکن است بخواهید با استفاده از کتابخانهها و مفاهیم دیگری مانند OAuth یا OpenID Connect نیز SSO را پیادهسازی کنید.
SSO چطوری با MFA (احراز هویت چندمرحلهای) اداغم می شود؟
SSO (Single Sign-On) و MFA (Multi-Factor Authentication) دو فناوری مجزا هستند، اما میتوانند به همراه استفاده شوند تا امنیت ورود به سیستم را بهبود بخشند. در واقع، از MFA میتوان به عنوان یک لایه اضافی امنیتی در کنار SSO استفاده کرد.
![](https://bytegate.io/wp-content/uploads/014-1.jpg)
SSO به کاربران اجازه میدهد با یک بار ورود به سیستم، به تمام سرویسها و برنامههای مختلف دسترسی داشته باشند. اما این فقط شامل فرآیند احراز هویت یک مرحلهای (مانند نام کاربری و رمز عبور) است. با استفاده از MFA، امکان اضافه کردن مراحل احراز هویت متعدد به فرایند ورود ایجاد میشود. به این صورت، در کنار نام کاربری و رمز عبور، یک عامل دوم احراز هویت مانند کد تأیید ارسالی به تلفن همراه، اثر انگشت، توکن امنیتی و غیره مورد استفاده قرار میگیرد.
با ترکیب SSO و MFA، کاربران تنها یک بار وارد سیستم میشوند (استفاده از یک مجوز SSO)، اما هنگام دسترسی به سرویسها، برای احراز هویت بیشتر، به سایر عوامل (مانند تأیید ارسالی به تلفن همراه) نیاز دارند. این روش به کاربران امکان میدهد به صورت مرحله به مرحله احراز هویت شوند و امنیت ورود به سیستم را افزایش دهند.
بنابراین، با استفاده از SSO و MFA در کنار هم، میتوانید تجربه ورود به سیستم را ساده و راحت نگه داشته و در عین حال امنیت آن را بهبود بخشید. کاربران با یک بار ورود به سیستم به تمام سرویسها دسترسی خواهند داشت و به مراحل احراز هویت چندمرحلهای نیز میتوانند تجربه اضافی امنیتی داشته باشند.
جمع بندی:
با توجه به مزایا و معایب SSO، می توانید تصمیم بگیرید آیا این راهکار برای سازمان شما مناسب است یا خیر. به طور کلی، با اجرای صحیح و مدیریت مناسب SSO، می توانید به راحتی بهره وری را افزایش داده و هزینه های مربوط به مدیریت رمز عبور را کاهش دهید. امیدوارم این مقاله به شما کمک کند تا با SSO و کاربردهای آن بیشتر آشنا شوید و بتوانید تصمیمات بهتری بگیرید.