امنيت برنامه هاي وب ( بخش دوم )
در اين مقاله به بررسي Windows Authentication خواهيم پرداخت .
همانگونه که در بخش اول اين مقاله اشاره گرديد ، برنامه هاي وب ASP.NET از سه روش عمده به منظور تائيد کاربران استفاده مي نمايند :
Windows
Authentication
Forms
Authentication
Passport
Authentication
در Windows
Authentication ، برنامه هاي وب مسئوليتي را در
ارتباط با تائيد کاربران برعهده نگرفته و اين وظيفه تماما" به سيستم عامل
ويندوز ، واگذار مي گردد. فرآيند تائيد کاربران در روش فوق، بصورت زير است :
کاربر درخواستي مبني بر دريافت يک صفحه وب ايمن را از برنامه وب ، مي نمايد .
پس از دريافت درخواست توسط سرويس دهنده وب ، IIS
عمليات بررسي صلاحيت کاربر را انجام خواهد داد . در اين راستا ، اطلاعات ارائه شده
توسط کاربر در زمان logon ( نام و رمز عبور) ، با اطلاعات
موجود بر روي سرويس دهنده وب و يا Domain ، مقايسه مي
گردد .
در صورتيکه پس از بررسي مدارک ارائه شده توسط کاربر ( نام و رمز عبور ) ، وي به
عنوان کاربر غير مجاز تشخيص داده شود ، درخواست وي ناديده گرفته خواهد شد .
کامپيوتر سرويس گيرنده ، يک جعبه محاوره اي Logon را
توليد و از کاربر درخواست درج اطلاعات مورد نياز ( نام و رمز عبور ) ، مي گردد .
پس از درج اطلاعات درخواستي توسط کاربر و ارسال آنان براي سرويس دهنده ،
مجددا" IIS بررسي لازم در خصوص صحت آنان را انجام خواهد داد . در صورتيکه صحت
اطلاعات ارسالي کاربر ( نام و رمز عبور ) تائيد گردد ، IIS
درخواست اوليه کاربر را به سمت برنامه وب هدايت مي نمايد .
در آخرين مرحله و پس از بررسي و تائيد صلاحيت کاربر ، صفحه وب درخواستي براي کاربر
ارسال مي گردد .
مهمترين مزيت روش Windows
Authentication ، استفاده مشترک از يک مدل امنيتي به منظور دستيابي به منابع
موجود در شبکه و برنامه هاي وب است . پس از تعريف و اعطاي مجوزهاي لازم به کاربر ،
امکان دستيابي وي به منابع موجود در شبکه و برنامه هاي وب بر اساس يک سيستم امنيتي
مشابه و يکسان ، فراهم مي گردد .
در زمان ايجاد يک پروژه جديد برنامه وب توسط ويژوال استوديو دات نت ، از روش 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
آغاز مي نمايد .
روش Windows
integrated
authentication در يک شبکه مبتني بر 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 شبکه نيز
باشند .
تائيد کاربران بر اساس نوع وظيفه
براي تائيد کاربران به منظور استفاده از يک برنامه مي توان ، مجوزهاي لازم را بر
اساس وظيفه آنان در سازمان ، صادر و امکان دستيابي و يا عدم دستيابي را براي آنان
فراهم نمود. در ويندوز NT و XP ، وظايف به اسامي مپ شده تا از اين طريق امکان شناسائي گروه هاي
کاربران ، فراهم گردد. ويندوز، چندين گروه را بصورت اتوماتيک از قبل ايجاد مي
نمايد : 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 به همراه Windows Authentication
تنظيمات Authorization در فايل Web.Config با تنظيمات انجام شده در IIS با يکديگر Overlap مي شوند . در صورتيکه Authorization هم
در فايل 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)
بازگشت به فهرست
بازگشت به صفحه نخست