احتمالا شما هم بارها نام (Security Assertion Markup Language) شنیده اید. احراز هویت معمولا با ارائه یک نام کاربری و رمز عبور اتفاق می افتد. به زبان ساده پروتکل SAML ارتباط ایمن بین برنامه ها را ممکن می کند و به کاربران این قابلیت و امکان را می دهد که با اطلاعات اکانت (نام کاربری و رمز عبور) اجازه دسترسی به برنامه های مختلف را داشته باشند. در ادامه این مطلب با ما همراه باشید تا به بررسی کامل و جامع این موضوع بپردازیم.
SAML چیست؟
Security Assertion Markup Language یا SAML، روشی استاندارد که به برنامهها و سرویسها نشان میدهد که کاربر همان کاربری است که میگوید. SAML با ارائه روشی برای احراز هویت یک کاربر و سپس انتقال آن تأیید اعتبار به چندین برنامه، فناوری ورود به سیستم واحد (SSO) را ممکن میسازد. جدیدترین نسخه SAML SAML 2.0 است.
احراز هویت SAML را مانند یک کارت شناسایی در نظر بگیرید: روشی کوتاه و استاندارد برای نشان دادن اینکه کسی چه کسی است. بهجای انجام یک سری آزمایشهای DNA برای تایید هویت شخصی، میتوان فقط به کارت شناسایی آنها نگاه کرد.
در محاسبات و شبکه، یکی از چالشهای اصلی این است که سیستمها و دستگاههایی که توسط فروشندگان مختلف برای اهداف مختلف ساخته شدهاند، با هم کار کنند. به این «عملکرد متقابل» می گویند: توانایی ماشین های مختلف برای تعامل با یکدیگر، علی رغم مشخصات فنی متفاوتشان. SAML یک استاندارد قابل همکاری است – این یک روش پذیرفته شده برای برقراری ارتباط هویت کاربر با ارائه دهندگان خدمات ابری است.
Log in with SAML یعنی چی؟
ورود با SAML (Security Assertion Markup Language) یک روش احراز هویت واحد SSO یا (Single Sign-On) است که به کاربران اجازه می دهد تنها یک بار وارد سیستم شوند و سپس به سیستمها و سرویسهای مختلف دسترسی پیدا کنند، بدون نیاز به ورود مجدد به هر یک از این سرویسها.
در این فرآیند، از SAML به عنوان یک استاندارد باز برای تبادل اطلاعات احراز هویت بین یک Identity Provider (IdP) (ارائهدهنده هویت) و یک Service Provider (SP) (ارائهدهنده خدمات) استفاده می شود. به طور کلی، وقتی کاربری قصد ورود به یک سرویس را دارد:
- کاربر درخواست ورود به یک Service Provider (SP) را ارسال میکند.
- SPکاربر را به Identity Provider (IdP) هدایت می کند (این همان جایی است که اطلاعات ورود کاربر، مدیریت می شود).
- کاربر اطلاعات احراز هویت خود را وارد کرده و IdP صحت آن را تأیید می کند.
- در صورتی که اطلاعات معتبر باشدIdP یک Assertion (تأییدیه هویت) به SP ارسال میکند.
- SPبر اساس این تأییدیه، کاربر را به عنوان کاربر معتبر شناسایی کرده و به او اجازه دسترسی به سرویس مورد نظر را میدهد.
SAMLیک پروسه بسیار کاربردی برای شرکت ها و سازمان های مختلف است که نیاز به مدیریت دسترسیهای متعدد برای کاربران دارند، چرا که این روش باعث ساده سازی و افزایش امنیت در فرآیند احراز هویت میشود.
SAML2.0 چیست؟
SAML2.0 نسخه جدید SAML است و از سال 2005 مورد استفاده قرار گرفته است. SAML2.0 چندین نسخه از SAML را که قبلا استفاده می شدند، ترکیب کرده است. بسیاری از سیستم ها از نسخه هی قبلی مانند SAML1.1 برای سازگاری عقبرو پشتیبانی می کنند، اما SAML2.0 استاندارد جدید تری است.
SSO (Single Sign On) چیست؟
SSO یا احراز هویت یکپارچه روشی است که در آن کاربران در برابر چندین سامانه و برنامه کاربردی به صورت همزمان احراز هویت شوند. با از SSO کاربر در یک صفحه ورود به سامانه یکپارچه وارد شده و سپس می تواند از برنامه های مختلف استفاده کند. جالب است بدانید، در واقع نیازی نیست که کاربران هویت خود را به ازای هر سامانه مورد استفاده تایید کنند.
توجه داشته باشید که برای این کار، سیستم SSO باید با هر برنامه خارجی ارتباط برقرار کند تا به آنها بگوید کاربر به سیستم وارد شده است و این جایی است که SAML وارد می شود.
SAML برای چه کاری استفاده می شود؟
SAML نحوه ورود کاربران به سامانه ها یا وب سایت ها را کاملا تغییر می دهد. هدف، ساده سازی فرایند های احراز هویت و کنترل دسترسی برای همه طرفین یعنی ارائه دهندگان هویت، ارائه دهندگان خدمت و کاربران نهایی است.
SAML به جای درخواست اطلاعات اکانت هر بار ورود به سیستم، می تواند در تایید هویت کاربر به عنوان شخصی که ادعا کرده است، کمک کند و سطح اجازه را برای اعطا یا رد دسترسی تایید کند. علاوه بر این، SAML به ارائه دهندگان هویت و ارائه دهندگان خدمات و سرویس اجازه می دهد به صورت جداگانه وجود داشته باشند، که به سازمان ها کمک می کند تا مدیریت کاربر را متمرکز کرده و دسترسی به راه حل های مختلف نرم افزاری را فراهم کنند.
SAML چگونه کار می کند؟
یک فرآیند معمولی SSO شامل این سه مرحله زیر است:
- اصلی (همچنین به عنوان “موضوع” شناخته می شود)
- ارائه دهنده هویت
- ارائه دهنده خدمات
اصل/موضوع: تقریباً همیشه شامل یک کاربر انسانی است که سعی می کند به یک برنامه میزبانی ابری دسترسی پیدا کند.
ارائهدهنده هویت: ارائهدهنده هویت (IdP) یک سرویس نرمافزار ابری است که هویت کاربر را معمولاً از طریق یک فرآیند ورود به سیستم ذخیره و تأیید میکند. اساساً، نقش IdP این است که بگوید، “من این شخص را می شناسم، و در اینجا کاری است که آنها مجاز به انجام آن هستند.” یک سیستم SSO در واقع ممکن است از IdP جدا باشد، اما در این موارد SSO اساساً به عنوان نماینده IdP عمل می کند، بنابراین برای همه مقاصد و اهداف آنها در یک گردش کار SAML یکسان هستند.
ارائهدهنده خدمات: این برنامه یا سرویسی است که کاربر میخواهد از آن استفاده کند. نمونههای متداول عبارتند از پلتفرمهای ایمیل ابری مانند Gmail و Microsoft Office 365 (مایکروسافت 365)، سرویسهای ذخیرهسازی ابری مانند Google Drive و AWS S3 و برنامههای ارتباطی مانند Slack و Skype. معمولاً یک کاربر مستقیماً به این سرویس ها وارد می شود، اما وقتی از SSO استفاده می شود، کاربر به جای آن وارد SSO می شود و SAML برای دسترسی به آنها به جای ورود مستقیم استفاده می شود.
این چیزی است که در یک جریان معمولی ممکن است به نظر برسد:
مدیر از ارائه دهنده خدمات درخواست می کند؛ سپس ارائه دهنده خدمات از ارائه دهنده هویت درخواست احراز هویت می کند. ارائهدهنده هویت یک ادعای SAML را برای ارائهدهنده خدمات ارسال میکند و سپس ارائهدهنده خدمات میتواند پاسخی را برای کاربر ارسال کند.
اگر اصل (کاربر) قبلا وارد نشده باشد، ارائه دهنده هویت ممکن است از آنها بخواهد که قبل از ارسال یک ادعای SAML وارد سیستم شوند.
سند ادعای SAML چیست؟
ادعای SAML پیامی است که به ارائهدهنده خدمات میگوید یک کاربر وارد سیستم شده است. اظهارات SAML شامل تمام اطلاعات لازم برای یک ارائهدهنده خدمات برای تایید هویت کاربر، از جمله منبع ادعا، زمان صدور آن، و شرایط است که این ادعا را معتبر می کند.
سه نوع مختلف از اسناد ادعاهای SAML وجود دارد:
- ادعا های تایید هویت، شناسایی کاربر را اثبات می کند و زمان ورود کاربر را به شما معرفی می کند و اینکه از چه روشی برای احراز هویت استفاده کرده است به عنوان مثال، Kerberos، فاکتور دو عاملی، NTLM و غیر
- ادعا های انتساب ویژگی های SAML را به ارائه دهنده خدمات منتقل می کند. ویژگی های SAML قطعات خاصی از داده ها هستند که اطلاعات مربوط به کاربر را ارائه می دهند.
- ادعا های تصمیم مجوز، می گوید کاربر مجاز به استفاده از خدمات باشد یا اینکه ارائه دهنده درخواست خود را به دلیل خرابی رمز عبور یا عدم دسترسی به خدمات دسترسی به خدمات شناسایی و رد می کند.
آیا احراز هویت SAML همان مجوز کاربر است؟
SAML یک فناوری برای احراز هویت کاربر است، نه مجوز کاربر، و این یک تمایز کلیدی است. مجوز کاربر یک حوزه جداگانه از مدیریت هویت و دسترسی است.
احراز هویت به هویت کاربر اشاره دارد: اینکه او چه کسی است و آیا هویت آنها توسط فرآیند ورود تأیید شده است یا خیر.
مجوز به امتیازات و مجوزهای کاربر اشاره دارد: به طور خاص، اعمالی که آنها مجاز به انجام در سیستم های یک شرکت هستند.
در مورد تفاوت بین احراز هویت و مجوز به این شکل فکر کنید: تصور کنید فردی در یک جشنواره موسیقی شرکت می کند. در ورودی جشنواره، او بلیت خود و یک مدارک شناسایی اضافی را ارائه می کند تا ثابت کند که حق داشتن بلیط را دارد. با انجام این کار، او اجازه ورود به جشنواره را دارد. او احراز هویت شده است.
با این حال، فقط به این دلیل که شخص در جشنواره است، به این معنی نیست که او می تواند به هر جایی برود و هر کاری که می خواهد انجام دهد. او میتواند نمایشهای جشنواره را تماشا کند، اما نمیتواند روی صحنه برود و اجرا کند، و همچنین نمیتواند به پشت صحنه برود و با اجراکنندگان تعامل داشته باشد – زیرا او مجاز به انجام این کار نیست. اگر او پاسهای پشت صحنه میخرید، یا علاوه بر حضور در صحنه، مجری هم بود، مجوز بیشتری هم داشت.
Cloudflare Zero Trust نمونه ای از راه حل های مدیریت دسترسی است. Cloudflare شرکت ها را قادر می سازد تا دسترسی کاربران به منابع و داده های داخلی را بدون استفاده از شبکه خصوصی مجازی (VPN) مدیریت کنند. به راحتی با ارائه دهندگان SSO ادغام می شود تا هم مجوز کاربر و هم احراز هویت کاربر را ارائه دهد.
پروتکل های مشابه SAML:
به احتمال زیاد احراز هویت کاربران نسبت به برنامه های کاربردی یکی از بزرگ ترین چالشی است که بخش فناوری اطلاعات با آن روبرو است. سیستم های متنوع زیادی وجود دارد که کاربر به آنها نیاز دارد که به آنها دسترسی پیدا کند و به همین دلیل پروتکل های تایید هویت که استاندارد های باز هستند، در جهان ارائه شده است. در این بخش 5 مورد از آنها را بررسی می کنیم:
- Kerberos
Kerberos یک پروتکل تایید اعتبار شبکه است؛ این برنامه قدرتمند به منظور ارائه احراز هویت برای برنامه های کلاینت/سرور با استفاده از رمزنگاری کلید مخفی ساخته شده است. Kerberos در بسیاری از محصولات تجاری نیز موجود است.
- LDAP
(Lightweight Directory Access Protocol) LDAP یک پروتکل نرم افزاری است که به هر کسی امکان میدهد سازمان ها، افراد و سایر منابع مانند پرونده ها و دستگاه ها را در یک شبکه اعم از اینترنت عمومی یا یک اینترنت شرکتی قرار دهد.
- OpenID
یک پروتکل احراز هویت استاندارد و غیر متمرکز است و این امکان را برای کاربران فراهم می کند تا با استفاده از یک سرویس ثالث، توسط سایت های همکار تایید شوند و نیاز وب مستر ها را به سیستم های ورود به سیستم تبلیغاتی خاص خود برطرف کنند و به کاربران امکان می دهد بدون نیاز به داشتن یک شناسه رمز عبور جداگانه، به چندین وب سایت نامربوط وارد شوند.
- OAuth
یک چارچوب احراز هویت است که به برنامه های کاربردی امکان دسترسی محدود به حساب های کاربری در یک سرویس وب HTTP، مانند GitHub ، Facebook و google را می دهد.
- RADIUS
(Remote Authentication Dial in Service User) یک پروتکل شبکه است که مدیریت تایید هویت، برای کاربرانی که به یک سرویس شبکه متصل شده اند را ارائه می دهد.
مزایای پروتکل SAML
پروتکل SAML مجموعه ای از مزایای ویژه ای را برای کاربران و سازمان ها فراهم می کند. از میان این مزایا، کاهش پیچیدگی در استفاده از چندین برنامه وب به طور هم زمان به عنوان یکی از مهم ترین آنها برجسته است. مزایای ویژه دیگر شامل موارد زیر می شود:
- بهبود تجربه کاری
استفاده از پروتکل SAML نه تنها ورود به برنامه ها و سامانه ها را آسان می کند، بلکه کاربران را در بهره وری بیشتر نیز یاری می رساند. این به آن دلیل است که کاربران به راحتی به ابزار های مورد نیاز برای انجام وظایف خود دسترسی پیدا می کنند.
- کاهش خطر از دست رفتن اطلاعات اکانت و اعتبارنامه
داشتن حساب های کاربری متعدد در بیشتر مواقع منجر به فراموشی پسورد توسط افراد می شود و یا حتی در شرایط بد تر، افراد ممکن است پسورد ها را یادداشت کنند که خطر سرقت اطلاعات افزایش می یابد. اما با استفاده از پروتکل SAML کاربران فقط نیاز به یک یک ترکیب نام کاربری و رمز عبور دارند.
- افزایش امنیت
پروتکل SAML یک تایید اعتبار واحد را از یک ارائه دهنده هویت امن ارائه می دهد و اطلاعات هویتی کاربران را به ارائه دهندگان خدمات و سرویس انتقال می دهد. این جریان اطمینان می دهد که مدارک هویتی تنها به طور مستقیم ارسال می شوند و ریسک هایی مانند حملات فیشینگ یا سرقت اطلاعات اکانت را به حداقل می رساند.
- کاهش هزینه ها
پروتکل SAML به صرفه جویی قابل توجهی در زمان مدیران منابع میکند، چرا که به شما کمک می کند درخواست های پشتیبانی و بازنشانی پسورد را کاهش دهید. همچنین با کمک به حداقل رساندن هزینه های توسعه که اغلب با روش های احراز هویت اختصاصی اتفاق می افتد، اقتصادی تر می شود.
- مدیریت ساده تر کاربران
با وجود کارمندانی که از چندین برنامه مختلف استفاده میکنند و می تواند برای ادارات فناوری اطلاعات مشکل ساز باشد که باید تغییرات در حقوق دسترسی کارمندان را مدیریت کنند، به خصوص در صورت تغییر نقش کارمندان یا جذب افراد جدید به شرکت است.
با استفاده از پروتکل SAML، امکان بهره برداری از این مزایا و بهره وری بهتر در سیستم ها و سرویس های آنلاین فراهم می شود.
آیا پروتکل SAML آسیب پذیر است؟
SAML یک پروتکل امنیتی برای تبادل اطلاعات هویتی و اجازه دسترسی استفاده می شد. این پروتکل طراحی شده تا امکان استفاده از آن در محیط های مختلف و برای موارد متعددی را فراهم کند. طراحان SAML هنگام توسعه این پروتکل با در نظر گرفتن انعطاف پذیری و قابلیت اطمینان بالا عمل کرده اند.
در ساختار SAML، ارسال Signature به تنهایی برای اعتبار سنجی کافی نیست و باید همراه با محتوای content To sign ارسال شود. این رویکرد به نظر می رسد که ممکن است انعطاف پذیری را کاهش دهد. اگر از روش دیگری استفاده می شد و signature به صورت جداگانه ارسال میشد، ممکن بود که ساختار و انتقال اطلاعات به شکلی ساده تر انجام شود.
با این حال، انتخاب طراحان SAML برای جای دادن تمام اطلاعات در یک فایل XML به سادگی و انعطاف پذیری بیشتر در ارتباط های میان سرور و مشتری منجر شده است. این انتخاب به معنای این است که می توان تمام اطلاعات مرتبط با هویت و اجازه دسترسی را در یک فایل قرار داد و به سادگی آن را انتقال داد.
به طور خلاصه، امضا و اعتبار سنجی فایل های XML دشوار است؛ اما ابزار ها و روش هایی وجود دارند که این چالش را برطرف می کنند. شواهد نیز نشان دهنده این است که این مسئله امنیتی به شدت جدی است. به نظر می رسد تمام پروتکل هایی که از رویکرد های مشابه با SAML استفاده میکنند، در معرض آسیب پذیری های امنیتی قوی هستند.
چطور آسیب پذیری های SAML را کاهش دهیم؟
جهت کاهش آسیب پذیری ها، به منظور افزایش امنیت در مسائل امنیتی، لازم است فرایند ارزیابی پایداری قبل از پردازش فایل های XML انجام شود. به طور کلی، برای ارزیابی امضا به جای استفاده از روش های ارزیابی مبتنی بر بایت، می توان مراحل زیر را دنبال کرد:
ارزیابی پایداری round-trip: در این مرحله، فایل XML باید به صورت کامل تجزیه و تحلیل شود و سپس مجددا ترکیب شود. این عملیات برای اطمینان از اینکه اطلاعات در هنگام تجزیه و تحلیل فایل گم نشده باشد و همچنین تغییرات ناخواسته در فایل ایجاد نشده باشد، انجام می شود.
انجام مجدد واکاوی فایل XML: پس از مرحله اول، فایل XML مجددا باید تجزیه و تحلیل شود. این اقدام از جهت اطمینان از صحت محتوای فایل بسیار مهم است.
ایجاد canonical XML: در این مرحله، یک نسخه کانونیکال از فایل XML ایجاد می شود. این نسخه با استفاده از قوانین و تبدیلات پیچیده تر از XML design، بازسازی می شود. این کار از جهت حفظ یکنوایی و تبدیل محتوای XML به شکل استاندارد و تعیینی مهم است.
همانطور که گفته شد، مراحل به شدت پیچیده بوده و از این پیچیدگی ها می توان خطاها و مشکلات امنیتی به وجود آورد. به همین دلیل، انجام صحیح و دقیق این مراحل ضروری است تا آسیب پذیری ها جلوگیری شود و امنیت اطلاعات حفظ شود.
جمع بندی
در پایان، میتوان گفت که SAML بهعنوان یک استاندارد جهانی، نقش بسیار مهمی در تسهیل ارتباطات ایمن بین برنامهها و سرویسها ایفا میکند. با استفاده از این پروتکل، سازمانها میتوانند از یکپارچگی در احراز هویت کاربران خود بهرهمند شوند و تجربهای راحتتر و امنتر برای کاربران فراهم کنند. بهرهگیری از SAML نه تنها امنیت را افزایش میدهد، بلکه به سادهسازی فرآیندهای احراز هویت و کاهش پیچیدگیهای مدیریتی نیز کمک میکند. در دنیای امروز که نیاز به ارتباطات امن و یکپارچه بیشتر از همیشه حس میشود، درک و استفاده صحیح از SAML میتواند بهعنوان یک گام اساسی در مسیر امنیت دیجیتال تلقی شود.
Leave A Comment