راه پرداخت
رسانه فناوری‌های مالی ایران

فناوری به نام SSO یا Single Sign On

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

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

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

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

به‌عنوان مثال، اگر به‌صورت قهری یا طبیعی فردی از آن سازمان می‌رود، باید به ده‌ها سامانه مراجعه کرده و دسترسی آن کاربر را غیرفعال کنند و طبیعی است که ممکن است به‌دلیل زیاد بودن سامانه‌ها و بی‌دقتی فردی، این مهم در بعضی از سامانه‌ها صورت نگیرد، حال آنکه بارها شاهد بوده‌ایم که شخصی از سازمانی رفته و هنوز بعد از هشت سال به بعضی از سامانه‌های آن سازمان دسترسی دارد!

به هر ترتیب بسیاری از سازمان‌های دولتی و حتی خصوصی بزرگ با این‌گونه مشکلات دست به گریبان هستند. برای حل این مشکل، در سال‌های دور، روش‌های زیادی توسط شرکت‌های فناوری اطلاعات داخلی یا خارجی ابداع شد مانند Shared Cookies, Token Authentication و غیره. ولی مشکل اصلی که وجود داشت آن بود که استاندارد مشخص و متمرکزی در این خصوص وجود نداشت. تا اینکه استانداردی به نام oAuth مطرح شد که پس از مدتی با افزونه قابل توجهی به نام OpenID Connect یا به اختصار OIDC به مرحله تکمیل رسید.

پس از این استاندارد، سامانه‌های متنوعی، خصوصاً سامانه‌هایی که مربوط به شبکه‌های اجتماعی بودند، این استانداردها را پیاده‌سازی کرده و کار را برای کاربران ساده کردند. احتمالاً تاکنون سایت‌های زیادی را مشاهده کرده‌اید که وقتی می‌خواهید در داخل آنها ثبت‌نام کنید و حوصله انجام این فرایند را ندارید، با یک مستطیل که در داخل آن نوشته شده: Google, Yahoo, Microsoft, LinkedIn, Github و غیره مواجه می‌شوید.

شما می‌توانید به جای ثبت‌نام مستقیم در داخل همان سایت‌ها و انجام فرایندهای زمان‌بر Email / Mobile Verification، صرفاً روی لینک‌های شبکه‌های اجتماعی مذکور کلیک کنید. با کلیک روی یکی از عناوین فوق، یا یک کادر باز می‌شود یا مرورگر شما را به سایت شبکه اجتماعی مذکور هدایت کرده و پس از ورود شناسه کاربری و گذرواژه که البته در اکثر موارد هم در مرورگر ذخیره شده و نیاز به تایپ آنها ندارید، عملیات Authentication صورت می‌گیرد.

پس از شناسایی شما توسط سایت‌های شبکه‌های اجتماعی، مرورگر شما را به سامانه مذکور برمی‌گرداند و شما می‌توانید به‌‌عنوان یک فرد شناسایی‌شده به فعالیت خود ادامه دهید. در واقع به این عملیات، عملیات SSO یا همان Single Sign On می‌گویند؛ یعنی به جای اینکه ما در صدها سایت یا سامانه به‌صورت مستقل و جداگانه ثبت‌نام کنیم و صدها شناسه کاربری و گذرواژه حفظ کرده یا در جایی ذخیره کنیم، صرفاً در یک شبکه اجتماعی مانند گوگل ثبت‌نام می‌کنیم و سپس در آن صدها سایت و با عملیات SSO و با استفاده از استانداردهای oAuth و OIDC همیشه از یک جا شناسایی می‌شویم.

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

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

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

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

با توجه به سه مورد فوق، وجود یک سامانه SSO که تمامی استانداردهای oAuth و OIDC‌ را، آن‌ هم به‌صورت کاملاً بومی، پیاده‌سازی کرده باشد، در کشورمان به‌شدت احساس می‌شود. چندی پیش متوجه شدیم که یکی از شرکت‌های داخلی اقدام به راه‌اندازی چنین سامانه بومی به این نشانی کرده و هرچند این سامانه مراحل توسعه و آزمایش خود را دنبال می‌کند، ولی انجام چنین اقداماتی در کشور، بسیار قابل تقدیر است.


نکاتی در خصوص AAA یا Triple A


این سه حرف (AAA) مخفف Authentication ،Authorization و Auditing است. Authentication به معنای طریقه شناسایی کاربر، Authorization به معنای ارائه مجوزهای دسترسی به کاربر و Auditing نیز به معنای ثبت فعالیت‌های کاربر است. بگذارید این سه مفهوم را در قالب یک مثال واقعی بررسی کنیم.

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

در اولین جلسه کلاس، زمانی که به در ورودی آموزشگاه می‌رسید، در آموزشگاه بسته است و شما باید از طریق دستگاه آیفون زنگ را به صدا درآورده و شناسه کاربری و گذرواژه خود را به مسئول آموزشگاه اعلام کنید. در این حالت، نحوه شناسایی شما، دستگاه آیفون بوده و از طریق این دستگاه، شما شناسایی می‌شوید. زمانی که در را برای شما باز می‌کنند و شما وارد آموزشگاه می‌شوید، شما فقط حق خواهید داشت در بین ساعت شش تا هفت عصر، صرفاً وارد کلاس پنج شوید. شما با استفاده از کارت هوشمندی که در زمان ثبت‌نام تحویل گرفته‌اید، می‌توانید وارد کلاس مربوطه شوید. بدین صورت که آن کارت را درون دستگاه کارت‌خوان کلاس قرار داده و پس از باز شدن در کلاس، وارد آن می‌شوید.

طبعاً با این کارت هوشمند، شما اجازه ورود به کلاس‌های دیگر و حتی همان کلاس (پنج) ولی در ساعت دیگری را نخواهید داشت؛ چراکه در زمان ثبت‌نام صرفاً مجوز دسترسی شما به کلاس پنج و در بازه زمانی شش تا هفت همان روز ثبت شده است. حال فرض کنید شما غیبت‌های زیادی در کلاس مذکور داشته‌اید یا در بسیاری مواقع دیر به کلاس رسیده‌اید یا زودتر از زمان خاتمه، کلاس را ترک کرده‌اید یا از روی کنجکاوی و با در دست داشتن همان کارت هوشمند، اقدام به باز کردن اتاق‌های مختلف، در ساعات مختلف کرده‌اید، در این صورت ممکن است بعد از مدتی، مدیر آموزشگاه از طریق فهرست ورود و خروج‌های بی‌موقع یا غیرمجازی که انجام داده‌اید، شما را بازخواست کند. فهرستی که نزد مدیر آموزشگاه است، فهرستی از فعالیت‌های ثبت‌شده طی ماه‌هایی است که شما وارد آموزشگاه شده‌اید.


نکاتی در خصوص oAuth و OIDC


استاندارد oAuth در خصوص Authentication راهکارهایی را ارائه می‌دهد و این قابلیت را دارد که افزونه‌هایی را به آن اضافه کنیم. باید دقت داشته باشیم که اکثر این افزونه‌ها به مرور زمان استاندارد شده‌اند. همان‌طور که در ابتدای مقاله نیز اشاره شد، یکی از مهم‌ترین و جذاب‌ترین آنها، افزونه OIDC است که وظیفه Authorization را برعهده دارد. زمانی که یک سامانه SSO راه‌اندازی می‌کنیم، می‌توانیم در خود سامانه، امکان ورود از طریق سامانه‌های شبکه‌های اجتماعی دیگر را نیز به آن اضافه کرده و همچنین می‌توانیم امکان ورود دو یا سه‌مرحله‌ای را در آنها فعال کنیم.

در حالت تکامل‌یافته، یک SSO می‌تواند عملیات IAM یعنی Identity Access Management را نیز در خود جای دهد؛ یعنی می‌توان در داخل یک سامانه SSO، مفاهیمی مانند Scope ایجاد کرده و امکان دسترسی کاربران به آنها را فراهم کنیم. می‌توانیم در سامانه SSO، یکسری Claim مانند نام، نام خانوادگی، کد ملی و غیره تعریف کرده و از کاربران بخواهیم که آنها را تکمیل کرده و در صورت رضایت‌شان، آن مقادیر را در اختیار دیگر سامانه‌ها قرار دهیم. می‌توانیم مفهوم Role Management را نیز با استفاده از همان Claimها پیاده‌سازی کنیم.

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.