سرویس خوش فکر مایکروسافت ADFS

05 آذر 1392 7162 بازدید

سرویس خوش فکر مایکروسافت ADFS

 

امروز که داشتم فکر میکردم که چه چیزی میتونه عضو سرویس های امنیتی مایکروسافت باشه و براتون جالب باشه که توضیح بدم ناگهان ذهنم رفت سمت سرویس ADFS. یادش به خیر با این سرویس خیلی خاطره دارم چون اولین باری که راه اندازیش کردم تو پروژه ارتباط از راه دور امن با سرور CRM توسط Outlook در یک سازمان بود. اون موقع من بودم و یک سری مقاله امنیتی و Claims Based Authentication مایکروسافت که تمام امیدم این بود که بتونم ارتباط از راه دور با سرور CRM را با این سرویس امن کنم و بتونم علاوه بر امنیت Single Sign on را نیز Deploy کنم. اون موقع کمتر کسی را میدیدم که بدونهADFS چیه و کار کردن باهاش به چه شکله ولی ناامید نشدم و رفتم جلو. خیلی امتحانش کردم شاید 3 ماه را به طور شبانه روزی روی سناریو های این سرویس کار کردم. حالا بگذریم فقط خواستم یک مقدمه ای درباره تجربم از ADFS براتون بگم تا برسیم به توضیحات این سرویس خوش فکر مایکروسافت.

سرویس ADFS سرویسی است که به کاربران اجازه دسترسی بر روی سرور ها و سیستم های شبکه چه از راه دور و چه از داخل شبکه را به صورت Single sign on (SSO) و بسیار امن می دهد. عملیات Authentication این سرور بسیار دقیق و تمام ارتباط این سرور در شبکه از طریق کد های XML می باشد. روشی که این سرویس برای Authentication استفاده میکند روش Claims Based Authentication برای Authentication در داخل شبکه و روش Internet Facing Deployment (IFD) برای دسترسی کاربران به سرور ها و سرویس های داخل شبکه از خارج از شبکه می باشد. در هر کدام از این روش ها شما باید Rule های مخصوص به آن روش که تعیین کننده چگونگی ارتباط و شرایط ارتباط کاربر مورد نظر میباشد را تنظیم کنید. به طور مثال شکل زیر تصویری از CRM برای Integration با ADFS است.

 

 

 

 

البته این را بدانید که این ارتباط فقط برای داخل و خارج سازمان نیست و حتی برای ارتباط Trust شده بین دو سازمان برای ایجاد دو حوزه امنیتی و تحت کنترل نیز بکار میرود. برای درک بیشتر این موضوع به شکل زیر توجه کنید تا با هم شکل زیر را تحلیل کنیم.میخوام به شکلی نحوه ارتباط Secure سرویس ADFS برای ارتباط کاربر با صفحه وب CRM را براتون مثال بزنم. (خاطرات خودم ...!)

 

 

خب ایشالاه که همه با CRM آشنا هستند. CRM نرم افزار ارتباط با مشتری Microsoft می باشد که به صورت Web-Base در دسترس کاربران قرار میگیرد تا از آن استفاده کنند. خب حالا ما 2 حوزه امنیتی یا 2 سازمان جدا هستیم که میخواهیم از حوزه Identity Provider به CRM حوزه Resource Provider متصل شویم. هر دو سازمان از ADFS استفاده میکنند و برای Authentication شدن کاربران باید از این دو فیلتر عبور کنند تا به منابع شبکه دسترسی پیدا کنند.

ما در حوزه Resource Provider سرور CRM را داریم که ایجاد یک Trust بین سرور CRM و ADFS این حوزه توانسته ایم به صورت یک لینک  ارتباطی بر پایه XML این Trust را برقرار کنیم. بعد از برقراری این Trust تمامی Authentication ها از داخل فیلتر ADFS عبور می کند.

همانطور که می بینید در مسیر شماره 1 اولین Request از طرف Browser کاربر برای وصل شدن به CRM به سرور CRM فرستاده می شود. سپس در مسیر شماره 2 سرور CRM که وظیفه Authentication و امنیت ارتباط خود را به ADFS سپرده است Request کاربر را به سمت سرویس ADFS متقل میکند تا  ADFS پس از چک کردن Rule ها تصمیم بگیرد که آیا باید به کاربر مورد نظر اجازه دسترسی به CRM را بدهد یا خیر. حالا در مسیر شماره 3 سرور ADFS یک Token برای ایجاد ارتباط کاربر با CRM برای کاربر ایجاد کرده و ارسال میکند.(این Token یک رمز هست برای تایید هویت کاربر مورد نظر)

حالا در مسیر شماره 4 سرور ADFS حوزه Resource Provider بوسیله Trust ایجاد شده تقاضای کاربر را برای سرور ADFS حوزه Identity Provider که حوزه همان کاربر است ارسال می کند تا عملیات Authentication کاربر آغاز شود. سپس در مسیر شماره 5 سرور ADFS اطلاعات کاربر و هویت آن را از خود کاربر دریافت کرده و در مسیر شماره 6 این اطلاعات با سرور Active Directory چک میکند تا هویت کاربر ابتدا در محل خود کاربر تایید گردد. سپس در مسیر شماره 7 اطلاعات کاربر به سمت سرور ADFS حوزه Resource Provider فرستاده می شود تا این کاربر در این حوزه تایید هویت شود. و در انتها در مسیر شماره 8 اطلاعات کار بر به سرور CRM فرستاده شده . در مسیر شماره 9 سرور CRM صفحه لاگین امن و Single Sign on سرور ADFS را برای کاربر فرستاده می شود. این صفحه لاگین درست به همان Browser که کاربر در آن درخواست دسترسی به URL سرور CRM را داشته است فرستاده می شود که به شکل زیر است.(تداعی خاطرات...)

 

 

این را بدانید که ADFS سرویسی است که کاملا با سرویس های اصلی مایکروسافت یعنی Active Directory و Active Directory Application Mode (ADAM)  کاملا Integrate بوده و اصولا ارتباط اصلی آن با سرویس Microsoft IIS می باشد. ADFS از استاندارد قوی X.509 برای ایجاد Certificate ها برای برقراری Trust بین یک Identity Provider و Resource Provider استفاده میکند و هر Application که بخواهد زیر نظر ADFS کاربران به آن دسترسی داشته باشند باید در کد های آن برنامه تغییراتی ایجاد شود که ارتیباط دریافت شده توسط این برنامه به سمت سرور ADFS فرستاده شود.

یکی Object مهم در ADFS وجو دارد که در تایید هویت و دسترسی کاربر به شبکه ای که Authentication آن را ADFS برعهده دارد نقش به سزایی دارد و حتی زیر ساخت تمام Rule هایی است که در سرور ADFS می سازیم و ارتباط کاربر با ADFS را کنترل کرده و آن را رمز نگاری می کند که Claim نام دارد. اصولا Claim ها اطلاعاتی درباره کاربر میباشند که توسط یکی از سرویس های زیر مجموعه سرور ADFS یعنی سرویس STS یا Security Token Service که وظیفه ایجاد کردن و مدیریت کردن Token ها را هم دارد ایجاد می شوند. Claim ها از 5 فاکتور اصلی درباره امنیت کاربر تشکیل می شوند که عبارتند از , Name و Identity و Key و Group و Privilege. Claim ها سه نوع هستند طبق 3 فاکتور ساخته می شوند که عبارتند از:  UPN و E-Mail و Common Name که اصولا Claim Rule ها بر این اساس ساخته می شوند.

مثلا شکل زیر طریقه ایجاد یک UPN Claim Rule را نمایش می دهد.

 

این بود ماجرای سرویس خوش فکر مایکروسافت که البته این همه ماجرا نیست چون برای درک ADFS باید به داخل آن دقیق نگاه کنی.

 

بدورد