Windows Authentication در Asp.Net و رفتار های جالب Active Directory
چکیده
این مقاله برای برنامه نویسان وب که در شرکت های دارای زیر گروه قصد استفاده از Windows Authenticaton را دارند بسیار مفید است .
در این مقاله خبری از کد نویسی نیست , به جای آن قصد دارم تجربیات شخصی خودم را در مورد استفاده از Windows Authenticaton در Asp.Net در یک گروه(شرکت) بسیار بزرگ را در اختیار شما دوستان قرار بدم .
پیشنهاد کارشناسان.نت :
ثبت نام هر دو کلاس حضوری مقدماتی و پیشرفته Asp.Net Core Blazor WebAssembly
تنها با 500 هزار تومان (هر دوره تکی 300 هزار تومان)
آموزش
فرض کنید شما برای یک شرکت مادر با دامنه فرضی 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 مواجه بودیم .
راه حل این مشکل با توجه به طراحی خاص سیستم ما وجود داشت , اما در کل نتیجه اخلاقی این مقاله توجه دادن بخش حراست و منابع انسانی و شبکه شرکت ها و سازمان های بزرگ به هماهنگی هر چه بیشتر با برنامه نویسان و رعایت استاندارد های آنها برای تعریف کد پرسنلی , کارت ساعت و ... برای کارمندان می باشد .
امیدوارم این مقاله برای شما مفید بوده باشد .
فایل های مرتبط با آموزش برای دانلود
درباره ناشر
مقالات مرتبط
رابطه استفاده از UserName و PassWord با SSL و Certificate در WCFتوسعه مدل Asp.Net Identity 2.0
پیاده سازی Asp.Net Identity به روش Ajax