امنيت برنامه هاي وب ( بخش دوم )
در اين مقاله به بررسي Windows Authentication خواهيم پرداخت .
همانگونه که در بخش اول اين مقاله اشاره گرديد ، برنامه هاي وب ASP.NET از سه روش عمده به منظور تائيد کاربران استفاده مي نمايند :
Authentication Windows
Forms Authentication
Passport Authentication
در Windows Authentication برنامه هاي وب مسئوليتي را در ارتباط با تائيد کاربران برعهده نگرفته و اين وظيفه تماما" ، به سيستم عامل ويندوز ، واگذار مي گردد. فرآيند تائيد کاربران در روش فوق، بصورت زير است :
کاربر درخواستي مبني بر دريافت يک صفحه وب ايمن را از برنامه وب ، مي نمايد .
پس از دريافت درخواست توسط سرويس دهنده وب IIS ،عمليات بررسي صلاحيت کاربر را انجام خواهد داد . در اين راستا ، اطلاعات ارائه شده توسط کاربر در زمان logon نام و رمز عبور) ، با اطلاعات موجود بر روي سرويس دهنده وب ) و يا ، Domain مقايسه مي گردد .
در صورتيکه پس از بررسي مدارک ارائه شده توسط کاربر ( نام و رمز عبور ) ، وي به عنوان کاربر غير مجاز تشخيص داده
شود ، درخواست وي ناديده گرفته خواهد شد . کامپيوتر سرويس گيرنده ، يک جعبه محاوره اي Logon را توليد و از کاربر درخواست درج اطلاعات مورد نياز ( نام و رمز عبور ) ، مي گردد . پس از درج اطلاعات درخواستي توسط کاربر و ارسال آنان براي سرويس دهنده ، مجددا IIS بررسي لازم در خصوص صحت آنان را انجام خواهد داد . در صورتيکه صحت اطلاعات ارسالي کاربر ( نام و رمز عبور ) تائيد گردد IIS درخواست اوليه کاربر را به سمت برنامه وب هدايت مي نمايد.
در آخرين مرحله و پس از بررسي و تائيد صلاحيت کاربر ، صفحه وب درخواستي براي کاربر ارسال مي گردد . مهمترين مزيت روش Authentication Windows استفاده مشترک از يک مدل امنيتي به منظور دستيابي به منابع موجود در شبکه و برنامه هاي وب است . پس از تعريف و اعطاي مجوزهاي لازم به کاربر ، امکان دستيابي وي به منابع
موجود در شبکه و برنامه هاي وب بر اساس يک سيستم امنيتي مشابه و يکسان ، فراهم مي گردد .
در زمان ايجاد يک پروژه جديد برنامه وب توسط ويژوال استوديو دات نت ، از روش Windows Authentication بصورت پيش فرض به منظور تائيد کاربران استفاده مي گردد .پس از ايجاد يک پروژه جديد برنامه وب در ويژوال استوديو دات نت ، فايل Web.Config بصورت اتوماتيک ايجاد مي گردد . ( يک فايل XML که اطلاعات متفاوتي را در ارتباط با پيکربندي رنامه وب در خود ذخيره مي نمايد ) . محتوي پيش فرض اين فايل بصورت زير است ( صرفا" بخشي که با موضوع اين مقاله ارتباط
دارد ، منعکس مي گردد ) :
Web.Config default setting
<authentication mode="Windows" />
<authorization>
<allow users="*" /> <!-- <-- تمامي کاربران
</authorization>
در بخش مربوط به عنصر authentication سياست تائيد کاربران برنامه هاي وب مخشص مي گردد . براي مشخص نمودن سياست فوق از خصلت mode مربوط به عنصر ، authentication استفاده شده که مي تواند يکي از مقادير : Windows , Forms ,Passport و يا None را دارا باشد . در بخش authorization سياست هاي مربوط به کاربران مجاز برنامه وب مشخص مي گردد . در اين رابطه مي توان ، امکان دستيابي و يا عدم دستيابي به برنامه هاي وب را با
مشخص نمودن کاربران و يا با توجه به وظايف آنان ، فراهم نمود.
( استفاده از کاراکتر " * " ، به معني همه کاربران بوده و کاراکتر "؟" به منزله کاربران ناشناس و غيرمجاز است) . براي آشنائي با عملکرد روش ، Windows Authentication مراحل زير را دنبال مي نمائيم : بخش authorization در فايل Web.Config را بصورت زير تغيير مي نمائيم :.
Authorization element
<authorization>
<deny users="?" />
</authorization>
تگ هاي زير را که يک جدول HTML را تعريف مي نمايند ، در فرم وب شروع برنامه وب ، قرار مي دهيم :
HTML Table in Startup web form
<TABLE id="tblUser">
<tr>
<TD><STRONG> است ؟ آيا کاربر تائيد شده </STRONG></TD>
<TD><Span runat="server" id="spnAuthenticated"></Span></TD>
</tr>
<tr>
<TD><STRONG> کاربر نام </STRONG></TD>
<TD><Span runat="server" id="spnUserName"></Span></TD>
</tr>
<tr>
<TD><STRONG> تائيد کاربر نوع </STRONG></TD>
<TD><Span runat="server" id="spnAuthenticationtype"></Span></TD>
</tr>
</TABLE>
به حالت Design view سوئيچ نموده و کد زير را در فايل Code Behind فرم وب شروع برنامه ، قرار مي دهيم :
Web form's code-behind file
Private Sub Page_Load( ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles
Mybase.Load
spnAuthenticated.InnerText = User.Identity.IsAuthenticated
spnUserName .InnerText = User.Identity.Name
spnAuthenticationType.InnerText = User.Identity.AuthenticationType
End Sub
پس از اجراي پروژه بصورت محلي ASP.NET تائيد کاربر را بر اساس نام و رمز عبوري که براي ورود به ويندوز استفاده شده است ، انجام خواهد د اد .
پس از اجراي پروژه از راه دور ( مثلا" دستيابي از طريق اينترنت)ASP.NET يک جعبه محاوره اي رادر مرورگر نمايش داده تا از طريق آن نام و رمز عبور کاربر دريافت گردد .
در صورتيکه نام و رمز عبور درج شده توسط کاربر با تعاريف انجام شده در Domain شبکه ، مطابقت نمايد ASP.NET
کاربر را تائيد و مجوز لازم به منظور استفاده از برنامه وب صادر خواهد شد . در اين رابطه ASP.NET
یک authorization certificate را به شکل يک کوکي صادر که در حين Session کاربر ، نگهداري و از آن استفاده مي گردد.
Session کاربر، پس از اتمام زمان Time out و يا بستن مرورگر ، خاتمه مي يابد . برنامه وب اجراي خود را متناسب با مجوزهاي تعريفشده در ارتباط با Account آغاز مي نمايد ..
روش integrated authentication Windows در يک شبکه مبتني برDomainبهتر کار خواهد کرد . شبکه هائي که از Workgroup استفاده مي نمايند ( در مقابل استفاده از Domain)
داراي محدوديت هاي خاص خود به منظور استفاده ازويژگي هاي امنيتي ، مي باشند. شبکه هاي مبتني بر Domain از يک کنترل کننده Domain به منظور تائيد ومعتبرسازي کاربران شبکه ، استفاده مي نمايد .
با استفاده از امکانات ارائه شده در فايل Web.Config مي توان يک لايه امنيتي مضاعف را ايجاد نمود . دراين راستا ،مي توان تنظيمات لازم به منظور دستيابي و يا عدم دستيابي کاربران و يا گروه هاي خاصي از کاربران را نيز انجام داد .
اعمال محدوديت براي کاربران خاص ( دستيابي و يا عدم دستيابي ) در موارديکه از روش Windows integrated authentication استفاده مي گردد ، ASP.NET ،ليست تائيد موجود در فايل Web.Config را به منظور آگاهي از صلاحيت کاربران شبکه براي استفاده ازبرنامه وب ، بررسي مي نمايد. کاراکترهاي
"*" و "؟" داراي معاني خاصي در ليست تائيد مي باشند : کاراکتر "* " ، نشاندهنده تمامي کاربران و کاراکتر "؟"،نشاندهنده کاربران غير مجاز( ناشناس) مي باشد . مثلا" ليست تائيد زير در ، Web.Config امکان دستيابي تمامي کاربران ناشناس به برنامه وب را حذف و مي بايست تمامي کاربران به منظور استفاده از برنامه وب ،تائيد گردند .
Authorization element
<authorization>
<deny users="?" />
</authorization>
به منظور اعمال محدوديت در دستيابي کاربراني خاص ،مي توان از عنصر <allow> استفاده و اسامي تمامي کاربران مجاز را با صراحت مشخص نمود (اسامي توسط ويرگول از يکديگر تفکيک مي گردند) . پس از معرفي کاربران مجاز با
استفاده از عنصر <allow> مي بايست با بکارگيري عنصر <deny> امکان دستيابي به برنامه توسط کاربران غير مجاز، سلب مي گردد .
Authorization element
<authorization>
<allow users="Ali Reaz , Reza Ali " />
<deny users="*" />
</authorization>
ليست مجاز فوق ، امکان دستيابي دو کاربر که اسامي آنان با صراحت مشخص شده است را به برنامه وب خواهد داد.ساير کاربران ، امکان دستيابي به برنامه وب را دارا نخواهند بود ( نقش عنصر deny در مثال فوق ) علاوه بر ليست مجاز
فوق که اسامي دو کاربر را مشخص و آنان را براي استفاده از برنامه وب مجاز مي نمايد ، دو کاربر فوق ، مي بايست داراي Account لازم در Domain شبکه نيز باشند .
تائيد کاربران بر اساس نوع وظيفه
براي تائيد کاربران به منظور استفاده از يک برنامه مي توان ، مجوزهاي لازم را بر اساس وظيفه آنان در سازمان ، صادر و امکان دستيابي و يا عدم دستيابي را براي آنان فراهم نمود. در ويندوز XP و NT
وظايف به اسامي مپ شده تا از اين طريق امکان شناسائي گروه هاي کاربران ، فراهم گردد. ويندوز، چندين گروه را بصورت اتوماتيک از قبل ايجاد مي نمايد :.Administrators ,Users وGuests و
در اين رابطه مي توان از عنصر <roles> در ليست استفاده کنندگان مجاز برنامه وب در فايل Web.Config استفاده و امکان دستيابي به يک برنامه را با توجه به وظايف کاربر ، فراهم نمود. مثلا" ليست زير،
امکان دستيابي به برنامه وب را صرفا" براي کاربراني که به عنوان Administrator به شبکه وارد مي شوند ، فراهم مي نمايد.
Authorization element
<authorization>
<allow roles ="Administrators" />
<deny users="*" />
</authorization>
پس از تائيد کاربر و صدور مجوز لازم به منظور استفاده از برنامه وب ، مي توان با استفاده از خصلت Identity مربوط به شي ، User هويت کاربر ( نام و نوع وظيفه ) را از طريق برنامه شناسائي نمود.خصلت فوق، يک شي را که شامل
اطلاعات مربوط به نام و وظيفه کاربراست را برمي گرداند .
Web form's code-behind file
Private Sub Page_Load( ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles
Mybase.Load
spnAuthenticated.InnerText = User.Identity.IsAuthenticated
spnUserName .InnerText = User.Identity.Name
spnAuthenticationType.InnerText = User.Identity.AuthenticationType
End Sub
به منظور آگاهي و انجام عمليات لازم با توجه به نوع وظيفه کاربر که از برنامه وب استفاده مي نمايد ، مي توان از متد IsInRole شي ، User استفاده نمود .
IsInRole method
If User.IsInRole("Administrators") Then
انجام عمليات دلخواه'
End If
استفاده از تنظيمات IIS به همراه Authentication Windows
تنظيمات Authorization در فايل Web.Config با تنظيمات انجام شده در IIS با يکديگر Overlap مي شوند . در صورتيکه Authorization هم در فايل Web.Config و هم توسط IIS
تنظيم شده باشد ، در ابتدا تنظيمات IIS بررسي و در ادامه تنظيمات موجود در فايل Web.Config و هم توسط IIS تنظيم شده باشد ، در ابتدا تنظيمات IIS بررسي و در ادامه تنظيمات موجود در فايل
Web.Config مورد توجه قرار خواهند گرفت. به منظور مشاهده تنظيمات authorization در IIS مراحل زير را دنبال مي نمائيم :
در IIS بر روي فولدر برنامه وب کليک سمت راست نموده و در ادامه گزينه Properties را انتخاب مي نمائيم . برنامه IIS در ادامه جعبه محاوره اي Properties مربوط به فولدر را نمايش خواهد داد .
بر روي Directory Security Tab کليک و در ادامه دکمه Edit را در گروه Anonymous Access And Authentication
Control کليک مي نمائيم IIS جعبه محاوره اي Authentication Methods را نمايش خواهد داد .
اولين گروه از تنظيمات در جعبه محاوره اي ، کنترل دستيابي Anonymous را انجام مي دهد ( همه کاربران ). غير فعال نمودن گزينه فوق ، معادل < "?"=deny User> در فايل Web.config
است.
Check Box هاي موجود در قسمت دوم جعبه محاوره اي ، مجاز بودن برنامه به منظور استفاده از Basic و يا Digest Authentication را علاوه بر Windows Authentication مشخص مي نمايد. روش هاي فوق ، ايمني بمراتب کمتري را
نسبت به Windows Integrated ارائه مي نمايند .مي توان چندين روش authentication را در IIS فعال نمود . در صورتيکه چندين روش فعال شده باشد ، مي توان با استفاده از متد
AuthenticationType مربوط به شي Identity از روش استفاده شده به منظور تائيد کاربر ، آگاهي يافت .
AuthenticationType method
Response.Write(User.Identity.AuthenticationType)
پایان//بخش دوم