مقدمه احتمالا تاکنون برای شما پیش آمده است که وارد یک برنامه‌ای شوید و برای استفاده از امکانات آن نیاز به ورود به حساب کاربری داشته باشد. شرکتی که این برنامه را توسعه داده است ممکن است که برنامه‌های دیگری نیز توسعه داده باشد که برای استفاده از آن‌ها نیاز است تا شما وارد حساب خود شوید. برای آنکه منظور خود را بهتر بیان کنم سایت Firebase که توسط شرکت گوگل توسعه داده شده است را مثال می‌زنم. برای آنکه از امکانات Firebase استفاده کنید لازم است تا ابتدا وارد حساب کاربری خود شوید. همچنین ممکن است همزمان بخواهید از امکانات موجود در Google Cloud نیز استفاده کنید و در آن‌جا نیز برای استفاده از امکانات آن باید وارد حساب خود شده باشید. نکته در این جا است، هنگامی که شما در یکی از این دو برنامه، ( Google Could یا Firebase ) وارد حساب خود شوید، دیگر نیاز نیست که اطلاعات ورود یعنی نام کاربری و رمز عبور خود را در دیگری وارد کنید و به طور خودکار شما با وارد کردن تنها یک بار نام کاربری و رمز عبور در یکی از برنامه‌ها در برنامه‌ی دیگر نیز وارد حساب کاربری خود شده‌اید. به این ویژگی، احراز هویت متمرکز ( Single Sign On یا به اختصار SSO ) می‌گویند. SSO درواقع یک تکنولوژی است که صفحات ورود برنامه‌های مختلف را به یک صفحه تبدیل می‌کند. SSO این امکان را فراهم می‌کند تا کاربر تنها یک بار نام‌کاربری و رمز عبور خود را در یک صفحه وارد کند تا به تمام برنامه‌هایی که به گونه‌ای با هم یکپارچه هستند دسترسی داشته باشد. SSO یکی از جنبه‌های مهم در کنترل، شناسایی و مدیریت دسترسی دانست. از جمله مزیت‌هایی که SSO دارد می‌توان به موارد زیر اشاره کرد: برای وارد شدن به حساب کاربری خود دیگری نیازی نیست چندین رمز عبور برای هر حساب خود ایجاد کنید و تنها با تعیین یک رمز عبور قوی برای یک حساب خود می‌توانید وارد شود. همین امر نیز سبب به یاد ماندن بهتر رمز می‌شود: وقتی که کابران رمزهای عبوری برای سرویس‌ها و برنامه‌های مختلف باید تعیین کنند وضعیتی به نام فرسودگی رمزعبور ( password fatigue ) رخ می‌دهد. یعنی کاربر رمز‌ها را در سرویس‌های مختلف استفاده‌ی مجدد می‌کند. که این امر خطر بزرگی به حساب می‌آید زیرا تمام سرویس‌ها با ضعیف‌ترین رمزعبور ایمن هستند. اگر پایگاه داده‌ی رمز‌های عبور هک شود آنگاه حمله کننده می‌تواند وارد تمام برنامه‌ها و سرویس‌ها شود. SSO با کاهش تمام صفحات ورود به یک صفحه‌ی ورود این داستان را حذف کرده است. البته این ویژگی تا حدی به ویژگی قبلی نیز برمی‌گردد که شما یک رمز قوی برای یک حساب کاربری خود انتخاب نموده‌اید: در SSO تنها یک جا برای وارد کردن رمزعبور است و همین امر اعمال سیاست‌ها و قوانین رمزگذاری برای تیم‌های IT را راحت‌تر کرده است. به عنوان مثال اگر سیاست‌های یک تیم IT تغییر رمز‌های کاربران به صورت دور‌ه‌ای باشد دیگر نیازی نیست که این کار را برای هر سرویس و برنامه به صورت جداگانه انجام دهند: وارد شدن به کمک یه کد یا یک USB علاوه بر گرفتن نام کاربری و رمزعبور می‌توانند روش‌های دیگر احراز هویت باشند که احراز هویت چند فاکتوره نام دارد. در صورتی که به ازای هر حساب کاربری بخواهیم از این روش استفاده کنیم وقت زیادی گرفته می‌شود و خسته کننده نیز می‌باشد. نکته‌ی دیگر در مورد فعال کردن آن است که اگر بخواهید از این گونه احراز هویت استفاده کنید باید به ازای هر حساب کاربری خود این ویژگی را فعال نمایید. اما به کمک سیستم SSO تنها کافی است که در یک برنامه این امکان را فعال سازید و هنگام وارد شدن در حساب کاربری خود در سایر برنامه‌ها این امکان فعال است. همچنین دیگر نیازی نیست که برای وارد شدن به حساب خود در سرویس‌های مختلف هر بار مراحل مربوط به احراز هویت چندگانه را طی نمایید: مدیران سیستم می‌توانند بعد از گذشت مدت زمان معینی از وارد شدن کاربر به حساب کاربر خود کاربر را مجبور به وارد کردن مجدد رمز عبور نمایند تا مطمین شوند که کاربری که با سیستم کار می‌کند، همان کاربری است که مجوز استفاده از سیستم را دارد یا خیر. با SSO هم کار مدیر سیستم راحت می‌شود زیرا دیگر نیازی نیست که اجبار ورود رمز عبور را برای هرکدام از برنامه‌ها به صورت جداگانه فعال کند و هم کاربر دیگر نیازی نیست که رمز عبور خود را به ازای هر برنامه مجدد وارد نماید: سیستم‌هایی که از SSO استفاده نمی‌کنند رمزهای کاربران را در برنامه‌ها و سرویس‌هایی ذخیره می‌کنند که ممکن است از روش‌های امنیتی مناسبی استفاده نکنند. اما به کمک SSO تمام رمزها دریک فضای امن ذخیره می‌شود که تیم IT کنترل بیشتر و بهتری روی آن دارند و می‌توانند پروتکل‌های امنیتی را بجای آنکه روی هر سرویس به صورت جداگانه اعمال کنند روی تنها یک فضای ذخیره سازی اعمال کنند: سرویس SSO مدت زمان بازیابی رمز عبور را نیز کاهش می‌دهد و برای بازیابی یا فعال سازی مجدد نیازی نیست که برای تمام برنامه رمز عبور خود را بازیابی نمایید و با یک بار انجام داد این کار، رمز عبور شما بازیابی شده و در سایر برنامه‌ها کاربرد دارد برای آنکه بیشتر با سرویس SSO آشنا شویم در ادامه به توضیح عملکرد آن می‌پردازیم. عملکرد SSO هنگامی که یک کاربر در سرویس SSO نام کاربری و رمز عبور خود را وارد می‌کند سرویس یک توکن احراز هویت می‌سازد تا بیاد آورد که کاربرد احراز هویت شده و مورد تایید است. یک توکن احراز هویت درواقع حاوی اطلاعات دیجیتال است که در مرورگر کاربر یا سرورهای سرویس SSO ذخیره شده‌اند. هر برنامه که کاربر به آن دسترسی دارد با سرویس SSO چک خواهد شد. این سرویس توکن احراز هویت کاربر را به برنامه ارسال می‌کند و سپس اجازه‌ی ورود کاربر به برنامه داده می‌شود. نکته‌ای که وجود دارد آن است که سرویس SSO خود به تنهایی نمی‌داند که چه کسی وارد سیستم شده است یا به عبارت دیگر کاربری که وارد شده، چه کسی است زیرا مشخصات و هویت کاربر را ذخیره نمی‌کند. درواقع اکثر سرویس‌های SSO به وسیله‌ی چک کردن اعتبارهای کاربر در مقابل یک سرویس مدیریت هویت کار می‌کنند. توکن‌های احراز هویت SSO یک رشته‌ای از حروف و اعداد هستند که یک ساختار و استاندارد مشخصی دارند و سرویس SSO چک می‌کند که آیا این توکن صحیح و قاتونی است یا خیر. معیار قانونی بودن یک توکن نیز میزان تطابق توکن دریافتی با ساختار و استاندارد تعریف شده است. در حال حاضر شرکت‌های بزرگی در حال ارایه‌ی این سرویس هستند مانند Cloud Flare اما پروژه‌هایی هم هستند که به صورت متن باز این سرویس را در اختیار کاربران قرار می‌دهند و سازمان‌هایی که تیم توسعه‌ی نرم‌افزار دارند می‌توانند از این نرم‌افزارها استفاده کنند. در بخش بعد دو نرم‌افزار متن باز که این سرویس را ارایه می‌دهند توضیح خواهیم داد. نرم‌افزارهای متن باز یکی از نرم‌افزارهای معروف ارایه‌ی سرویس SSO ، برنامه‌ی Identity Server است. این برنامه یک چارچوب cross - platform براساس OpenID Connect و OAuth است و یک احراز هویت مرکزی و قابلیت شناسایی برای برنامه چندتایی می‌دهد. OAuth یک پروتکل استاندارد صنعتی برای احراز هویت است و OpenID Connect نیز یک لایه‌ی ساده برروی این پروتکل می‌باشد که به مشتریان اجازه می‌دهد تا هویت کاربرنهایی را براساس احرازهویت انجام شده توسط یک سرور احراز هویت رسیدگی کند. این نرم‌افزار به زبان C نوشته شده و کد منبع آن در github به همراه مستندات مربوط به استقرار و توسعه قابل مشاهده است. نرم‌افزار KeyCloak نیز یک نرم‌افزار متن باز است که این نرم‌افزار نیز براساس OpenID Connect ، Auth . و SAML . است. SAML . مخفف Security Assertion Markup Language است و یک پروتکل براساس XML است که از توکن‌های امنیتی شامل اعلان‌هایی برای ارسال اطلاعات درمورد یک کاربر نهایی بین یک ارایه دهنده‌ی هویت و یک ارایه‌دهنده‌ی سرویس است. این برنامه قابلیت‌های سرویس SSO را برای برنامه و سرویس‌های تحت وب ارایه می‌دهد و قابلیت یکپارچه سازی LDAP و active directory را می‌دهد. درواقع یک واسط کاربری دارد که کاربران می‌توانند جلسه‌ها، اجازه‌ها و نقش‌ها را مدیریت کنند. همچنین کتابخانه‌های مشتری برای زبان‌های رایج مانند Java ، JavaScript و C ارایه می‌هد. این برنامه به زبان Java نوشته شده است و کد منبع آن نیز در github قرار دارد. البته شرکت‌های نرم‌افزاری هم هستند که این سرویس را ارایه می‌دهند و سازمان‌های کوچک و متوسط امکان استفاده از سرویسی که ارایه می هند را دارند که در ادامه به معرفی دو مورد از این ارایه دهندگان در داخل کشور می‌پردازیم ارایه دهندگان سرویس SSO در ایران یکی از شرکت‌هایی که سرویس SSO را ارایه می‌دهد، می‌توان از شرکت فناوران هویت الکترونیکی امن (هویتا) را نام برد. این شرکت یک سامانه به نام ParsSSO ایجاد کرده است که یک سرویس احراز هویت و امضای دیجیتال مبتنی بر PKI است. PKI مخفف Public Key Infrastructure است و یک سیستم از فرایندها، سیاست‌ها، احراز هویت و تکنولوژی‌هایی که رمزگذاری را کنترل می‌کنند و درواقع چیزی است که از پیام‌ها متنی، ایمیل، رمزهای عبور و غیره حفاظت می‌کند. این سامانه از دو زیر سیستم به نام ارایه‌دهنده‌ی هویت و دروازه‌ی امضای دیجیتال استفاده می‌کند. سیستم ارایه دهنده‌ی هویت برای ارایه خدمات AAA شامل احراز هویت ( Authentication ) ، کنترل دسترسی ( Authorization ) و حسابرسی ( Accounting ) است. سیستم دروازه‌ی امضای دیجیتال نیز برای ارایه‌ی خدمات درگاه دیجیتال است. از ویژگی‌های این سیستم می‌توان به موارد زیر اشاره کرد: پشتیبانی از الگوریتم‌های نامتقارن امضای دیجیتال متعارف پشتیبانی از فرمت‌های امضای دیجیتال متعارف شامل RAW , PKCS , PKCS , PAdeS , XAdeS , CAdeS پشتیبانی از الگوریتم های HASH شامل MD , SHA - , SHA - احراز هویت بر اساس چارچوب OAuth . و به صورت Single Sign - On مدیریت یکپارچه کاربران، نقش‌ها، سازمان‌ها، فراهم کنندگان خدمت و نشست‌ها پشتیبانی از انواع احراز هویت شامل نام کاربری و رمز عبور، توکن امضای دیجیتال سخت افزاری پارس کی، سرویس امضای همراه و OTP شرکت دیگری که در ایران این سرویس را ارایه می‌دهد شرکت متن باز سامانه است که نام این سیستم را متین گذاشته‌اند. سرویسی که توسط این شرکت پیاده سازی شده است امکاناتی مانند پیاده‌سازی به صورت توزیع شده، احراز هویت دو عاملی، ایجاد یکپارچگی در مراکز داده مختلف، اتصال به پایگاه داده کاربران و اتصال به سایر ارایه دهندگان سرویس SSo را فراهم می‌کند. با مراجعه به سایت این شرکت مستنداتی قرار داده شده است که ویژگی‌های و پروتکل‌های استفاده شده در این سرویس را به صورت کامل توضیح داده‌اند جمع بندی با سامانه‌ی احراز هویت متمرکز دیگر نیازی به وارد شدن به حساب کاربری برای چند برنامه‌ی یکپارچه نیست. مانند برنامه‌هایی که توسط شرکت گوگل ارایه می‌شوند. شما با ورود به حساب کاربری خود در یکی از برنامه‌ها مانند آن است که در سایر برنامه‌ها نیز وارد حساب کاربری خود شده‌اید. این سیستم مزیت‌هایی مانند صرفه جویی در وقت برای بازیابی رمز عبور، تعیین تنها یک رمز قوی برای حساب خود و عدم فراموشی آن، امکان مدیریت بهتر و امن‌تر رمز‌های عبور و امکان اجرای بهتری سیاست‌گذاری‌های رمزعبور. این سرویس به صورت متن باز نیز ارایه می‌شود و نرم‌افزارهایی مانند Identity Server و KeyCloak وجود دارند که کدهای آن‌ها حتی در گیت‌هاب موجود است و توسعه‌دهندگان نرم‌افزار سازمان‌ها‌می‌توانند از آن‌ها استفاده کنند. همچنین در ایران نیز شرکت‌هایی مانند متن باز سامانه و هویتا هستند که این سرویس را در اختیار سازمان‌ها قرار می‌دهند مراجع این وبسایت : www . cloudflare . com / learning / access - management / what - is - sso / این وبسایت : www . techtarget . com / searchsecurity / definition / single - sign - on این وبسایت : blog . containerize . com / / / / top - - open - source - single - sign - on - software - in - the - year - / این وبسایت : mbs . co . ir / fa / content / Single - Sign - On این وبسایت : www . hovita . ir / portal / viewpage / / D - pars - sso /