Windows-Authentication-در-Asp.Net-و-رفتار-های-جالب-Active-DirectoryReviewed by کارشناسان.نت on September 04Rating:5

فرض کنید شما برای یک شرکت مادر با دامنه فرضی MotherGroup.com در حال نوشتن یک سیستم تحت وب هستید , شما قصد دارید با استفاده از Windows Authenticaton نه تنها به کاربران شرکت مادر امکان دسترسی به سایت خودتان را بدهید , بلکه قصد دارین این دسترسی برای شرکت های زیر گروه نیز وجود داشته باشد مثلا دامنه SubGroup1.com که یکی از زیر گروه های شرکت شما است . برای این منظور باید این دامنه های مختلف توسط مدیران شبکه Trust شده باشند.

 

کارمندان شرکت مادر و زیر گروه های آن همگی دارای یک شناسه در Active Directory می باشند که معمولا" به ان کد پرسنلی می گویند . وقتی این کارمندان در مرورگرد آدرس وبسایت شما را وارد می کنند مثلا Web.MotherGroup.com , یک PopUp (پنجره) توسط مرورگر به انها نمایش داده می شود که نام کاربری و رمز عبور از آنها می خواهد . این نام کاربری همان شناسه Active Directory می باشد .

 

اما مشکل : تصور شخصی خود من از Active Directory یک جدول شبیه جداول Sql بود که شناسه کارمندان در آن یکتا و کلید اصلی می باشد , اما این تصور کاملا" اشتباه بود در واقع ما تعداد بسیار زیادی شناسه تکراری در شرکت مادر و زیر گروه ها داشتیم مثلا" Test@MotherGroup.com و Test@SubGroup1.com , کاربر Test از SubGroup1 وقتی نام کاربری و رمز خود را میزد با پیام نام کاربری یا رمز عبور اشتباه است مواجه می شد و البته کاربر Test در MotherGroup بدون مشکل وارد سیستم می شد .

 

ساده ترین راه حل این مشکل , مجبور کردن کاربران زیر گروه به وارد کردن نام کاربری خود به فرمت Domain\UserName می باشد مثلا برای کاربر Test در SubGroup1 فرمت ورود اطلاعات به صورت SubGroup1\Test خواهد شد . (البته اگر کاربران شرکت مادر به ماموریت در شرکت های زیر گروه بروند , از داخل آن شرکت آنها نیز باید به فرمت Domain\UserName ورود اطلاعات کنند , که اینجا دامنه همان MotherGroup.com می باشد).

 

در مورد سیستم ما مشکل تنها این نبود , در این گروه بسیار بزرگ یک فرد می تواند در چند شرکت عضو باشد , مثلا" در SubGroup1 مدیر عامل باشد و در MotherGroup عضو هیئت مدیره باشد , در نتیجه سیستم کنترل دسترسی ما (Authorization) بر اساس شناسه Active Directory و نام دامنه قرار گرفت , یعنی یک شناسه مثل Test در دامنه های مختلف دسترسی های مختلف دارد . اما مشکل :

 

فرض کنید دو کاربر Test@SubGroup.com و Test@SubGroup.org به سیستم ما وارد می شدند , شناسه ایی که توسط IIS به ما تحویل می شد به ترتیب برابر بود با SubGroup\Test و SubGroup\Test , یعنی قبل از اینکه نام دامنه به دست ما برسد , .com و .org از انتهای نام دامنه حذف می شدند , در نتیجه ما با کاربری کاملا" یکسان SubGroup\Test مواجه بودیم .

 

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

 

امیدوارم این مقاله برای شما مفید بوده باشد .