جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
امنيت برنامه هاي وب
-(2 Body) 
امنيت برنامه هاي وب
Visitor 654
Category: دنياي فن آوري
هر برنامه کامپيوتري که براي اجراء در محيط شبکه، طراحي و پياده سازي مي گردد ، مي بايست توجه خاصي به مقوله امنيت داشته باشد .برنامه هاي وب از زيرساخت شبکه ( اينترانت ، اينترانت ) براي ارائه خدمات خود به کاربران استفاده نموده و لازم است نحوه دستيابي کاربران به اين نوع از برنامه ها ، کنترل و با توجه به سياست هاي موجود ، امکان دستيابي فراهم گردد .در ابتدا مي بايست کاربران شناسائي و پس از تائيد هويت آنان ، امکان دستيابي به برنامه با توجه به مجوزهاي تعريف شده ، فراهم گردد. ASP.NET ( پلات فرم مايکروسافت براي طراحي و پياده سازي برنامه هاي وب ) ، از سه روش عمده به منظور شناسائي کاربران و اعطاي مجوزهاي لازم در جهت دستيابي و استفاده از يک برنامه وب ، استفاده مي نمايد :

Windows Authentication 
Forms Authentication 
Passport Authentication

در مجموعه مقالاتي که ارائه خواهد شد به بررسي هر يک از روش هاي فوق در جهت پياده سازي امنيت در برنامه هاي وب خواهيم پرداخت . در بخش اول اين مقاله ، به بررسي نحوه برخورد ASP.NET با کاربران ناشناس ( Anonymous ) ، روش هاي متفاوت شناسائي کاربران و پارامترهاي لازم در خصوص انتخاب يک استراتژي به منظور شناسائي کاربران با توجه به نوع برنامه ها ، خواهيم پرداخت .

شناسائي و تائيد کاربران

Authentication ، فرآيندي است که بر اساس آن کاربران شناسائي مي گردند . Authorization ، فرآيند اعطاي دستيابي به کاربران با توجه به هويت آنان مي باشد . با تلفيق Authentication و Authorization، امکان ايمن سازي برنامه هاي وب در مقابل افراد مزاحم و غير مجاز ، فراهم مي گردد .

دستيابي از طريق کاربران ناشناس ( Anonymous )

اغلب سايت هاي وب از روش دستيابي "Anonymous" ، استفاده مي نمايند . در چنين مواردي ، اطلاعات موجود بر روي سايت جنبه عمومي داشته و امکان دستيابي تمامي کاربران به اطلاعات وجود خواهد داشت . اين نوع سايت ها ، ضرورتي به بررسي مجاز بودن کاربران براي استفاده از منابع موجود ، نخواهند داشت . برنامه هاي وب ASP.NET ، امکان دستيابي Anonymous را به منابع موجود بر روي سرويس دهنده توسط Impersonation ارائه مي نمايند . Impersonation ، فرآيند نسبت دهي يک Account به يک کاربر ناشناس است . Account دستيابي Anonymous بصورت پيش فرض ، IUSER_computername ، مي باشد. با استفاده از Account فوق ، امکان کنترل کاربران ناشناس که به منابع موجود بر سرويس دهنده دستيابي دارند ، وجود خواهد داشت . به منظور مشاهده و تغيير مجوزهاي دستيابي در نظر گرفته شده براي Account فوق از برنامه Computer Management استفاده مي گردد :
• ورود به شبکه ( Logon ) به عنوان مديريت شبکه
• اجراي Computer Management ( از طريق : Start | Programs | Administrator Tools )
• انتخاب فولدر Users به منظور نمايش ليست کاربران
• مشاهده گروههائي که Account فوق به عنوان عضوي از آنان مي باشد( کليک بر روي Member of ) . کاربران Anonymous ، بصورت پيش فرض ، عضوي از گروه Guests بوده که داراي مجوزهاي اندکي مي باشد. ASP.NET از ASP.NET Account ( با توجه به تنظيمات پيش فرض) ، به منظور اجراي برنامه وب استفاده مي نمايد . بدين ترتيب ، در صورتيکه برنامه اي سعي در انجام عملياتي نمايد که در ليست مجوزهاي ASP.NET Account وجود نداشته باشد ، يک مورد خاص امنيتي بوجود آمده و امکان دستيابي آن تائيد نخواهد شد.
به منظور اعمال محدوديت در دستيابي کاربران ناشناس مي توان از تنظيمات مربوط به مجوزهاي فايل ويندوز استفاده نمود . براي ايمن سازي ، سرويس دهنده مي بايست داراي سيستم فايل NTFS باشد . سيستم هاي فايل FAT و يا FAT32 ، ايمن سازي در سطح فايل را ارائه نمي نمايند .

دستيابي از طريق کاربران تائيد شده

دستيابي Anonymous ، گزينه اي مناسب براي دستيابي به اطلاعات عمومي و عام است . در صورتيکه برنامه هاي وب شامل اطلاعاتي خاص و خصوصي باشند ، مي بايست در ابتدا کاربران شناسائي و در ادامه با توجه به مجوزهاي تعريف شده ، امکان دستيابي فراهم گردد. در برنامه هاي وب ASP.NET از سه روش عمده به منظور Authentication و Authorization کاربران استفاده مي گردد :
• Windows integrated authentication : در روش فوق ، شناسائي و تائيد کاربران بر اساس ليست کاربران تعريف شده بر روي سرويس دهنده انجام خواهد شد. در ادامه با توجه به مجوزها و امتيازات نسبت داده شده به هر Account ، امکان دستيابي و يا عدم دستيابي به منابع موجود بر روي سرويس دهنده ، فراهم مي گردد.
• Forms authentication : در روش فوق ، کاربران به يک فرم وب Logon ، هدايت مي گردند . در ادامه ، اطلاعات مربوط به نام و رمز عبور آنان اخذ و فرآيند شناسائي و تائيد بر اساس يک لسيت کاربران و يا از طريق يک بانک اطلاعاتي که برنامه حمايت مي نمايد ، انجام خواهد شد.
• Passport authentication : در روش فوق ، کاربران جديد به يک سايت که توسط مايکروسافت ميزبان شده است ، هدايت مي گردند .پس از ريجستر شدن کاربران ، امکان دستيابي آنان به چندين سايت ، فراهم خواهد شد( تمرکز در شناسائي کاربران و استفاده از سايت هاي متعدد با توجه به تائيد بعمل آمده ) .
هر يک از رويکردهاي فوق ، به همراه روش دستيابي Anonymous ، داراي مزاياي مختص به خود بوده و براي نوع خاصي از برنامه هاي وب ، مناسب مي باشند :
• نوع برنامه : برنامه وب عمومي اينترنت
روش تائيد کاربران : Anonymous
توضيحات : روش عمومي دستيابي براي اغلب سايت هاي وب ، مي باشد. در اين روش ، ضرورتي به Logon وجود نداشته و با استفاده از مجوزهاي سيستم فايل NTFS ، مي توان ايمن سازي منابعي را که قصد اعمال محدوديت در رابطه با دستيابي به آنان وجود دارد را انجام داد .
• نوع برنامه : برنامه وب اينترانت
روش تائيد کاربران : Windows integrated
توضيحات : در روش فوق ، سيستم معتبر سازي ويندوز ، کاربران شبکه را از طريق کنترل کننده Domain ، تائيد مي نمايد. امکان دستيابي به منابع برنامه هاي وب بر اساس مجوزهاي تعريف شده بر روي سرويس دهنده ، براي هر يک از کاربران فراهم مي گردد .
• نوع برنامه : برنامه هاي وب تجاري
روش تائيد کاربران : Forms
توضيحات : برنامه هائي که نيازمند دريافت اطلاعات مالي مي باشند ، مي بايست از روش فوق به منظور اخذ و ذخيره سازي اطلاعات ، استفاده نمايند .
• نوع برنامه : برنامه هاي متعدد تجاري
روش تائيد کاربران : Passport
توضيحات : در روش فوق ، کاربران يک مرتبه Sign in نموده ( از طريق يک مرکز تائيد کاربران ) و امکان دستيابي و استفاده آنان از تمامي برنامه هائي که از Passport SDK استفاده مي نمايند ، وجود خواهد داشت . اطلاعات کاربران در يک Passport profile نگهداري خواهدشد ( در مقابل استفاده از يک بانک اطلاعاتي محلي ) .

استفاده از Authentication در فايل هاي HTM و يا HTML

سه روش تائيد کاربران که توسط ASP.NET ارائه شده است ، صرفا" در رابطه با فايل هائي که به عنوان بخشي از برنامه وب مي باشند ، بکار گرفته مي شود .فرم هاي وب ( فايل هائي با انشعاب aspx . ) ، ماژول ها ( فايل هائي با انشعاب asax . ) ، نمونه هائي در اين زمينه مي باشند. فرآيند فوق ، صفحات HTML ( فايل هائي با انشعاب HTM و يا HTML ) را شامل نمي گردد و مسئوليت آن بصورت پيش فرض به IIS ( در مقابل ASP.NET ) واگذار شده است. در صورتيکه فصد تائيد کاربراني ( استفاده از يکي از روش هاي Windows,Forms و Passport ) را داشته باشيم که به صفحات HTML از طريق برنامه وب دستيابي دارند ، مي بايست اين نوع فايل ها به ASP.NET executable ، مپ گردند .به منظور مپ نمودن فايل هاي html به ASP.NET executable ، پس از اجراي IIS مراحل زير را دنبال مي نمائيم :
• انتخاب فولدر شامل برنامه وب و Properties از طريق Action Menu . در ادامه برنامه IIS ، جعبه محاوره اي Properties را نمايش خواهد داد .
• بر روي Directory Tab کليک نموده و در ادامه گزينه Configuration را انتخاب مي نمائيم . IIS در ادامه جعبه محاوره اي Application Configuration را نمايش خواهد داد .
• بر روي دکمه Add کليک نموده و در ادامه IIS جعبه محاوره اي Add/Edit Application Extension Mapping را نمايش خواهد داد .
• بر دکمه Browse کليک نموده و فايل aspnet_isapi.dll را انتخاب مي نمائيم .فايل فوق در دايرکتوري Windows Microsoft .Net Framework قرار داشته و مسير آن مشابه زير است :

Path for aspnet_isapi.dll

C:\windows\Microsoft.NET\Framework\versionnumber\aspnet_isapi.dll

• htm. را در فيلد File Extension تايپ مي نمائيم .
• مراحل فوق ، براي فايل هاي با انشعاب html ، تکرار مي گردد.
در 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)

در Forms Authentication ، برنامه IIS مسئوليتي را در ارتباط با تائيد کاربران برعهده نگرفته و تنظيمات امنيتي IIS در رابطه با برنامه وب ، دستيابي Anonymous مي باشد . فرآيند تائيد کاربران در روش فوق، بصورت زير است :
• زمانيکه سرويس گيرنده درخواست يک صفحه ايمن را مي نمايد ، IIS کاربر را به عنوان Anonymous، تائيد و در ادامه درخواست وي را براي ASP.NET ارسال مي نمايد .
• ASP.NET ، بررسي لازم در خصوص وجود يک کوکي خاص بر روي کامپيوتر سرويس گيرنده را انجام خواهد داد .
• در صورتيکه کوکي ، موجود نبوده و يا غيرمعتبر باشد ، ASP.NET درخواست کاربر را ناديده گرفته و براي وي يک صفحه Logon را ارسال مي نمايد ( مثلا" Login.aspx ).
• کاربر اطلاعات لازم ( نام و رمز عبور ) را در صفحه Logon.aspx ( به عنوان نمونه ) درج و در ادامه دکمه Submit موجود بر روي فرم را به منظور ارسال اطلاعات براي سرويس دهنده ، فعال مي نمايد.
• IIS ، مجددا" کاربر را به عنوان Anonymous، تائيد و درخواست وي را براي ASP.NET ارسال مي نمايد .
• ASP.NET ، تائيد کاربر را بر اساس اطلاعات ارسالي ( نام و رمز عبور ) انجام و يک کوکي را ايجاد مي نمايد .
• در نهايت ، صفحه وب ايمن درخواست شده به همراه کوکي جديد براي سرويس گيرنده ارسال مي گردد. ماداميکه کوکي معتبر باشد ، کاربر قادر به درخواست و مشاهده ساير صفحات وب مي باشد.
فرآيند فوق را مي توان به دو حالت متفاوت تعميم و مورد توجه قرار داد :
• حالت اول : درخواست يک صفحه ايمن از سرويس دهنده ، توسط يک کاربر غيرمجاز و تائيد نشده
مرحله اول : پس از درخواست يک سرويس گيرنده براي دستيابي به يک صفحه ايمن ، درخواست ارسالي وي در ابتدا توسط IIS بررسي و با توجه به اينکه تنظيمات IIS بصورت Anonymous پيکربندي شده تا امکان استفاده از Forms Authentication فراهم گردد ، درخواست کاربر ، مستقيما" براي ماژول ASP.NET Forms Authentication ارسال مي گردد .
مرحله دوم : ASP.NET ، بررسي لازم در خصوص وجود ( داشتن ) يک کوکي Authentication را انجام خواهد داد . با توجه به اينکه کاربر اولين مرتبه است که درخواست اطلاعاتي را نموده و داراي يک کوکي نمي باشد ، سرويس گيرنده به صفحه Logon ، هدايت مي گردد .
مرحله سوم : کاربراطلاعات ضروري ( نام و رمز عبور ) خود را در صفحه Logon درج و پس ازارسال آنان ،فرآيند بررسي اطلاعات ارسالي آغاز مي گردد. در يک برنامه بزرگ ، بررسي اطلاعات کاربر از طريق يک بانک اطلاعاتي شامل مشخصات کاربران انجام مي شود .
مرحله چهارم : در صورتيکه اطلاعات ارسالي کاربر ( نام و رمز عبور ) ، پس از بررسي توسط برنامه وب ، معتبر شناخته نگردند ، مجوز دستيابي براي کاربر صادر نشده و امکان دستيابي وي سلب مي گردد .
مرحله پنجم : در صورتيکه پس از بررسي اطلاعات ارسالي، اعتبار وصحت آنان تائيد گردد ، يک کوکي تائيد ايجاد و در ادامه به کاربر مجوز لازم به منظور دستيابي به صفحه ، اعطاء مي گردد .(هدايت کاربر به صفحه درخواست اوليه ) .
• حالت دوم : درخواست يک صفحه ايمن از سرويس دهنده ، توسط يک کاربر مجاز و تائيد شده
مرحله اول : پس از درخواست يک صفحه ايمن توسط سرويس گيرنده ، کوکي Authentication بهمراه درخواست وي براي سرويس دهنده ، ارسال مي گردد.
مرحله دوم :درخواست ارسالي توسط سرويس گيرنده در ابتدا توسط IIS دريافت و با توجه به تنظيمات انجام شده ( دسيتابي Anonymous ) ، درخواست وي مستقيما" براي ASP.NET Forms Authentication ارسال مي گردد .
مرحله سوم : ماژول ASP.NET Forms Authentication ، بررسي لازم در خصوص کوکي را انجام و در صورتيکه کوکي معتبر باشد ، سرويس گيرنده تائيد و امکان دستيابي و مشاهده صفحه وب درخواستي براي وي ، فراهم مي گردد .
در روش Forms Authentication ، بصورت اتوماتيک يک فرم وب طراحي شده به منظور اخذ اطلاعات مربوط به نام و رمز عبور کاربران ، نمايش داده مي شود . کد مرتبط با فرم وب ، عمليات تائيد و معتبرسازي کاربر را بر اساس ليست ذخيره شده در فايل Web.Config برنامه و يا از طريق يک بانک اطلاعاتي جداگانه ، انجام مي دهد. مزيت مهم Forms Authentication ، عدم ضرورت عضويت کاربران در Domain شبکه به منظور دستيابي به برنامه وب ، مي باشد .

فعال نمودن Forms Authentication

به منظور استفاده از روش فوق ، مي بايست مراحل زير را دنبال نمود :
• مقداردهي Authentication mode در فايل Web.config به Forms
• ايجاد يک فرم وب به منظور اخذ اطلاعات کاربران ( Logon Page )
• ايجاد يک فايل و يا بانک اطلاعاتي به منظور ذخيره نام و رمز عبور کاربران
• نوشتن کد لازم به منظور افزودن کاربر جديد به فايل و يا بانک اطلاعاتي کاربران
• نوشتن کد لازم به منظور تائيد کاربران با استناد به فايل و يا بانک اطلاعاتي کاربران
Forms Authentication ، از کلاس هاي موجود در namespace با نام System.Web.Security استفاده مي نمايد . به منظور استفاده از کلاس هاي فوق، مي بايست در ويژوال بيسک دات نت از عبارت Imports و در ويژوال سي شارپ از Using استفاده گردد ( در ابتداي هر ماژول که عمليات تائيد را انجام خواهد داد : Imports System.Web.Security ) .

مقداردهي Authentication mode

نوع تائيد کاربران در يک برنامه وب ، مي بايست با استفاده از عنصر <authentication> در فايل Web.config مشخص گردد. به منظور تنظيم برنامه مورد نظر خود براي استفاده از Forms Authentication ، تغييرات زير را در فايل Web.Config ، اعمال مي نمائيم :

Web.Config setting for Forms Authentication

 <authentication mode="Forms">
    <forms loginUrl = Login.aspx" >
          <credentials passwordFormat = "Clear" >
                  <user name = "Ali"       Password ="110" />
                  <user name = "Kaveh" Password ="111" />
         </credentials>
    </forms>
</authentication>


کد فوق، يک نوع ساده از تائيد کاربران به روش Forms را نشان مي دهد . در اين رابطه ، اغلب از تعاريف و تنظيمات پيش فرض و يک ليست کاربران مجاز، استفاده شده است. از عناصر متفاوتي در ارتباط با Forms Authentication در فايل Web.Config استفاده مي گردد.هر يک از عناصر داراي خصلت هاي خاص خود مي باشند :

• عنصر <authentication>

خصلت Mode ، با استفاده از خصلت فوق ، روش تائيد و شناسائي کاربران مشخص مي گردد. با مقدار دهي خصلت فوق به Forms ، روش Forms Authentication انتخاب خواهد شد.

• عنصر <forms>

خصلت name . از خصلت فوق به منظور مشخص نمودن نام کوکي که اطلاعات مربوط به نام و رمز عبور را ذخيره مي نمايد ، استفاده مي شود . مقدار پيش فرض ، authaspx . مي باشد . در صورتيکه بيش از يک برنامه بر روي سرويس دهنده از روش Forms Authentication استفاده مي نمايند ، مي بايست براي هر يک از آنان نام منحصربفردي در نظر گرفته شود .
خصلت loginUrl .از خصلت فوق به منظور مشخص نمودن نام فرم وب Login براي کاربران تائيد نشده ، استفاده مي گردد . مقدار پيش فرض خصلت فوق، Default.aspx است .
خصلت protection . با استفاده از خصلت فوق روش حفاظت کوکي Authentication که بر روي کامپيوتر سرويس گيرنده ذخيره مي گردد ، مشخص خواهد شد. مقدار پيش فرض خصلت فوق ، All بوده که عمليات رمزنگاري و بررسي اعتبار و صحت داده در رابطه با آن اعمال مي گردد. ساير گزينه هاي موجود در اين راستا ، Encryption,Validation و None مي باشد .
خصلت timeout . با استفاده از خصلت فوق ، مدت زمان نگهداري کوکي Authentication بر روي ماشين کاربر مشخص مي گردد . مقدار پيش فرض 30 دقيقه است . ASP.NET ، پس از دريافت يک درخواست جديد توسط کاربر و مشروط به گذشت بيش از نصف زمان تعريف شده ، کوکي را تجديد ( Renew ) خواهد کرد .
خصلت path . با استفاده از خصلت فوق ، مسير مورد نظر به منظور ذخيره سازي کوکي بر روي ماشين کاربر مشخص مي گردد . مقدار پيش فرض ، "\" است .

• عنصر <credentials>

خصلت passwordFormat ، با استفاده از خصلت فوق ، الگوريتم لازم به منظور رمزنگاري رمز عبور کاربر ، مشخص مي گردد . مقدار پيش فرض ، SHA1 مي باشد . ساير گزينه هاي موجود در اين رابطه ، MD5 و Clear ( بدون رمزنگاري ) مي باشد .

• عنصر <users>

خصلت name ، با استفاده از خصلت فوق ، نام کاربر مشخص مي گردد.
خصلت password ، با استفاده از خصلت فوق ، رمز عبور کاربر مشخص مي گردد.
عنصر <credentilas> ، امکان ذخيره سازي ليست کاربران را در Web.Config فراهم مي نمايد . رويکرد فوق ، روشي ساده به منظور تعريف کاربران مجاز يک برنامه وب مي باشد . در چنين مواردي ، مديريت سيستم مي تواند بسادگي و در صورت لزوم نام و رمز عبور کاربران ديگري را به ليست مجاز کاربران ، اضافه نمايد . مکانيزم فوق ، در مواردي که قصد داشته باشيم ، امکان تعريف نام و رمز عبور را در اختيار کاربران قرار دهيم ، گزينه مناسبي نبوده و مي بايست از يک فايل و يا بانک اطلاعاتي به منظور ذخيره سازي اطلاعات کاربران ، استفاده گردد.
به منظور استفاده از روش Forms Authentication ، مي بايست مراحل زير را دنبال نمود :
• مقداردهي Authentication mode در فايل Web.config به Forms
• ايجاد يک فرم وب به منظور اخذ اطلاعات کاربران ( Logon Page )
• ايجاد يک فايل و يا بانک اطلاعاتي به منظور ذخيره نام و رمز عبور کاربران
• نوشتن کد لازم به منظور افزودن کاربر جديد به فايل و يا بانک اطلاعاتي کاربران
• نوشتن کد لازم به منظور تائيد کاربران با استناد به فايل و يا بانک اطلاعاتي کاربران
در بخش سوم اين مقاله به بررسي اولين مرحله ( مقداردهي Authentication mode در فايل Web.config به Forms ) ، اشاره گرديد . در ادامه به بررسي ساير مراحل لازم به منظور استفاده از روش Forms Authentication ، خواهيم پرداخت .

Web.Config setting for Forms Authentication

 <authentication mode="Forms">
     <forms loginUrl =" Login.aspx" >
           <credentials passwordFormat = "SHA1" >
              <user name = "Srco.ir"              Password ="110" />
              <user name = "SakhaRavesh" Password ="111" />
        </credentials>
   </forms>
</authentication>


ايجاد يک فرم وب Logon

به منظور تائيد کاربران بر اساس روش Forms Authentication ، نيازمند استفاده از يک فرم وب بوده که با استفاده از آن امکان Logon کاربران ، فراهم گردد. فرم وب با استفاده از عنصر <forms> در فايل Web.Config ، مشخص شده و مي تواند صرفا" شامل دو Text box و يک Button و يا شامل فيلدهاي اطلاعاتي بيشتري به منظور اخذ اطلاعات کاربران باشد .

Login.aspx

 <%@ Page Language="vb"  Codebehind="Login.aspx.vb" Inherits="Web1.Login" codePage="65001" %>
<HTML>
 <HEAD>
     <title>صفحه تائيد کاربرانبرنامه</title>
     <meta name="vs_showGrid" content="True">
     <META http-equiv="Content-Type" content="text/html; charset=utf-8">
 </HEAD>
<BODY bgColor="#ffffff">
.   ...
 <asp:Button id="btnSingIn" runat="server" Text="Sign in"></asp:Button>
<asp:TextBox id="txtUserName" runat="server" Width="99px"></asp:TextBox>
<asp:TextBox id="txtPassword" runat="server" Width="100px" TextMode="Password"></asp:TextBox>
   ...

Login.aspx.vb

Imports System.Web.Security
Public Class Login
  ...
Private Sub btnSingIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSingOn.Click

   If  FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text) Then
         FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, True)
   Else
       txtPassword.Text = ""
       If CInt(ViewState("Tries")) > 1 Then
           Response.Redirect("Denied.htm")
       Else
           ViewState("Tries") = CInt(ViewState("Tries")) + 1
     End If
  End If
End Sub
 ...
ٍEnd Class

توضيحات

• کلاس FormsAuthentication بخشي از namespace با نام System.Web.Security مي باشد ، بنابراين مي بايست با استفاده از Imports ( در ويژوال بيسک دات نت ) آن را به برنامه Include نمائيم ( درويژوال سي شارپ ، استفاده از Using ) .
• متد Authenticate مربوط به کلاس FormsAuthentication با مراجعه به ليست کاربران تعريف شده توسط عنصر<credentials> فايل Web.Config ، بررسي لازم در خصوص نام ورمز عبور کاربر را انجام مي دهد.
• متد RedirectFromLoginPage مربوط به کلاس FormsAuthentication ، صفحه شروع برنامه وب را نمايش خواهد داد.
• در صورتيکه نام و رمز عبور کاربر معتبر نباشد ، به کاربر دو مرتبه ديگر فرصت Logon داده خواهد شد و در صورتيکه صلاحيت کاربر تائيد نگردد ، يک پيام خطاء نمايش داده مي شود. صفحه گزارش خطاء از نوع HTM مي باشد.( به هيچکدام از فرم هاي وب موجود در برنامه ، امکان دستيابي وجود نخواهد داشت ). در صورتيکه کاربر با استفاده از روش فوق به صفحه ديگر هدايت مي شود ، مي بايست از محل استقرار فايل فوق در محيطي خارج از حوزه برنامه مطمئن گرديد .
در مثال فوق ، صفحه شروع برنامه Webform1.aspx ( در بخش دوم اين مقاله ) در نظر گرفته شده است . پس از Logon موفقيت آميز، کاربر به صفحه فوق هدايت خواهد شد . زمانيکه کاربر بر روي دکمه sign in کليک مي نمايد ، تائيد کاربر بر اساس نام و رمز عبور انجام و براي وي يک مجوز صادر خواهد شد. بدين ترتيب، کاربر امکان دستيابي به بخش هاي متفاوت برنامه را بدست مي آورد .
از کلاس FormsAuthentication به منظور Sign out ، و يا حذف کوکي Authentication از روي ماشين کاربر استفاده مي گردد.کد زير دستيابي کاربر به برنامه را خاتمه داده و استفاده مجدد از برنامه توسط وي را ملزم به Login مجدد ، مي نمايد .

End User's access to an application

 Imports System.Web.Security
Private Sub butSignOut_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butSignOut.Click
    FormsAuthentication.SignOut ( )
    Response.Redirect( "UserInfo.aspx")
End Sub

تائيد کاربران با استفاده از يک بانک اطلاعاتي

در بخش قبل با فرآيند تائيد کاربران با استفاده از ليست تعريف شده کاربران موجود در فايل Web.Config ، آشنا شديم . متد Authenticate مربوط به کلاس FormsAuthentication ، به منظور خواندن اطلاعات از فايل فوق بصورت اتوماتيک ، پيکربندي شده است . رويکردد فوق ، گزينه اي مناسب در مواردي است که مسئوليت تعريف اسامي و رمز عبور کاربران به مدير سيستم واگذار شده باشد . در صورتيکه قصد داشته باشيم ، امکان تعريف نام و رمز عبور را در اختيار کاربران قرار دهيم ، مي بايست اطلاعات مربوط به کاربران خارج از فايل Web.config ذخيره گردد. اعمال تغييرات در فايل Web.config در زمان اجراء ، باعث Restart شدن برنامه شده و Reset تمامي متغيرهاي Session و Application استفاده شده توسط برنامه مي گردد. دراين رابطه مي توان ، اسامي کاربران را در هر نوع فايلي ذخيره نمود . بديهي است استفاده از يک بانک اطلاعاتي، مزاياي خاص خود را بدنبال خواهد داشت :
• اسامي کاربران مي تواند به عنوان کليد اوليه و به منظور ذخيره سازي ساير اطلاعات کاربران استفاده گردد .
• بانک هاي اطلاعاتي داراي کارآئي مطلوب به منظور دستيابي به اسامي و رمز عبور کاربران مي باشند .
• افزودن ، تغيير و دستيابي به رکوردهاي بانک اطلاعاتي با استفاده از استانداردهاي SQL انجام خواهد شد .
زمانيکه اسامي و رمز عبور کاربران در يک فايل و يا بانک اطلاعاتي ذخيره مي گردد ، مي توان با استفاده از متد HashPasswordeForStoringInConfigFile مربوط به کلاس FormsAuthentication ، آنان را رمز نمود. در اين رابطه از الگوريتم هاي SHA1 و يا MD5 به منظور رمزنگاري داده استفاده مي گردد :

Encrypting User names and passwords

 Password = FormsAuthentication.HashPasswordForStoringInConfigFile ( Password , "SHA1")

افزودن کاربران به يک بانک اطلاعاتي

به منظور افزودن کاربران به يک بانک اطلاعاتي ، اطلاعات مربوط به کاربران شامل نام و رمز عبور را از طريق دو TextBox اخذ و در ادامه با ايجاد يک Event Procedure ، آنان را به بانک اطلاعاتي اضافه نموده و در نهايت پيام مناسبي که نشاندهنده درج اطلاعات کاربر در بانک اطلاعاتي سيستم مي باشد ، نمايش داده خواهد شد . روتين زير با فراخواني تابع AddUser ، نام و رمز عبور کاربر را به بانک اطلاعاتي اضافه مي نمايد .
َ

َAdding User to a database

 Private Sub butNewUser_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butNewUser.Click
    If AddUser(txtName.Text, txtPassword.Text) Then
          spnNote.InnerText = "کاربر جديد به بانک اطلاعاتي کاربران اضافه گرديد"
    Else
          spnNote.InnerText = "کاربريبا اينمشخصات وجود دارد"
End If"
  End If
End Sub


تابع AddUser ، که در روتين فوق استفاده شده است ، در ابتدا رمز عبور کاربر را رمز نموده و در ادامه با استفاده از دستور SQL INSERT ، نام و رمز عبور را در بانک اطلاعاتي ذخيره مي نمايد .درصورتيکه رمز عبور در نظر گرفته شده توسط کاربر، قبلا" توسط کاربر ديگر تعريف و در بانک اطلاعاتي موجود باشد ، بلاک Exeption -handling ، خطاء را تشخيص داده و مقدار False را مبني بر عدم افزودن اطلاعات کاربر در بانک اطلاعاتي ، برمي گرداند .
َ

َAddUser Function

 Private Function AddUser ( Byval UserName As String , ByVal Password As String ) As Boolean
  Dim bSuccess As Boolean
  Password = FormsAuthentication.HashPasswordForStoringInConfigFile ( Password , "SHA1")
  Dim oleCommand As New OleDbCommand ( "INSERT INTO Users " + "Values ( '" + UserName + '" + Password + "')",oledbUsers)
  Try
      oledbUsers.Open ( )
      If oleCommand.ExecuteNonQuery ( ) Then bSuccess = True
      oledbUsers.Close ( )
  Catch
      bSuccess =False
      oledbUsers.Close ( )
  End Try
  Return bSuccess
End Function


در زمان تائيد کاربران با استفاده از ليست مشخص شده کاربران در فايل Web.Config ، از متد Authenticate استفاده مي گردد. در موارديکه براي تائيد کاربران از بانک اطلاعاتي استفاده مي گردد ، مي بايست کد لازم به منظور يافتن و مقايسه نام و رمز عبور کاربران ، نوشته گردد . روتين زير ، از تابع CheckPassword به منظور تائيد نام و رمز عبور استفاده نموده و در صورتيکه صلاحيت کاربر تائيد گردد به وي امکان دستيابي به برنامه داده خواهد شد.
َ

َAuthenticating Users from a database

 Private Sub butSignOn_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butSignOn.Click
   If CheckPassword(txtName.Text, txtPassword.Text) Then
         FormsAuthentication.RedirectFromLoginPage(txtName.Text, True)
    Else
         spnNote.InnerText = "نام و يا رمز عبور اشتباه است، مجددا سعي نمائيد"
         ViewState("tries") = ViewState("tries") + 1
          If   ViewState("Tries") > 3  Then
               Response.Redirect("Denied.htm")
         End If
   End If
End Sub


تابع CheckPassword ، در ابتدا رمز عبور کاربر را با استفاده از الگوريتم مشخص شده ، رمز مي نمايد. در ادامه ، رکورد بانک اطلاعاتي بر اساس نام جستجو و پس از يافتن رکورد مربوطه، مقايسه بين رمز عبور رمز شده در مقابل رمز عبور موجود در بانک اطلاعاتي ، انجام خواهد شد . دستيابي به بانک اطلاعاتي از طريق يک بلاک Exception handling انجام تا پيشگيري لازم در خصوص مسئله Locking ، انجام شود .
َ

َCheckPassword Function

 Private Function CheckPassword ( Byval UserName As String , ByVal Password As String ) As Boolean
  Dim bSuccess As Boolean
  Password = FormsAuthentication.HashPasswordeForStoringInConfigFile ( Password , "SHA1")
  Dim oleCommand As New OleDbCommand ( "SELECT * FROM Users" + "WHERE UserName='" + txtName.Text + "'" , oledbUsers )
  Try
      oledbUsers.Open ( )
      Dim rdrUsers As OledbDataReader = oleCommand.ExecuteReader ( )
      While rdrUsers.Read( )
            If Password =rdrUsers.Item("Password") Then bSuccess = True
      End While

      If oleCommand.ExecuteNonQuery ( ) Then bSuccess = True
      oledbUsers.Close ( )
   Catch
      bSuccess =False
      oledbUsers.Close ( )
  End Try
  Return bSuccess
End Function


تمامي کاربران با توجه به تنظيمات انجام شده در بخش <authentication> فايل Web.config ، بصورت اتوماتيک به صفحه LoginBaseDb.aspx هدايت خواهند شد .

Web.Config file setting for <authentication> element

  <authentication mode="Forms">
     <forms name="Test1Cookie" loginUrl ="LoginBaseDB.aspx" timeout="15"></forms>
</authentication>


صفحه LoginBaseDb.aspx :
در صورت درج نام و رمز عبور غيرمعتبر و فشردن دکمه "ورود به سايت " توسط کاربر ، يک پيام خطاء نمايش داده مي شود ( در صورت تائيد نام و رمز عبور ، امکان دستيابي کاربر به برنامه فراهم مي گردد) .
پس از درج نام و رمز عبور و فشردن دکمه " کاربر جديد " ، مشخصات کاربر در بانک اطلاعاتي کاربران ذخيره مي گردد .
زمانيکه از سرويس وب Passport مايکروسافت به منظور تائيد کاربران استفاده مي گردد ، مسئوليت تائيد کاربران از IIS و برنامه وب سلب شده و اين وظيفه به سايت Passport.com واگذار مي گردد. در روش Passport Authentication ، شناسائي کاربران بر اساس سرويس وب ارائه شده توسط Passport.com صورت مي پذيرد . در روش فوق ، تائيد کاربران متمرکز و پس از تائيد آنان ، امکان استفاده از ساير سايت هائي که از Passport Authentication استفاده مي نمايند ، وجود خواهد داشت .اطلاعات کاربران در يک پروفايل و بر روي سايت Passport.com ذخيره و ساير سايت هاي متقاضي که نيازمند تائيد کاربر به منظور ارائه خدمات خود مي باشند ، مي توانند ازاطلاعات کاربران استفاده نمايند . مهمترين ويژگي روش Passport Authentication ، استفاده از يک نام و رمز عبور به منظور استفاده از سايت هاي متعدد مي باشد . فرآيند تائيد کاربران در روش فوق، بصورت زير است :
• پس از درخواست يک صفحه ايمن توسط سرويس گيرنده ، درخواست وي در ابتدا براي IIS ارسال مي گردد.
• IIS ، کاربر را به عنوان Anonymous تائيد و درخواست وي را براي ASP.NET ارسال مي نمايد .
• ASP.NET ، بررسي لازم در خصوص وجود يک کوکي خاص را بر روي سرويس گيرنده انجام خواهد داد . در صورتيکه کوکي مورد نظر بر روي کامپيوتر سرويس گيرنده موجود نباشد ، درخواست کاربر ناديده گرفته شده و وي به وب سايت Passport.com به منظور تائيد صلاحيت ، هدايت مي گردد .
• سايت Passport.com ، يک فرم Login را توليد و براي سرويس گيرنده ارسال مي نمايد .سرويس گيرنده اطلاعات Logon را در آن درج و مجددا" اطلاعات را براي سايت Passport.com ارسال مي نمايد .
• در صورتيکه اطلاعات درج شده توسط کاربر ( نام و رمز عبور) با اطلاعات موجود در بانک اطلاعاتي پاسپورت مطابقت نمايد ، Passport.com سرويس گيرنده را تائيد و يک کوکي به همراه اطلاعات ذيربط ( مشابه يک بليط ) براي وي ارسال مي نمايد .
• درخواست سرويس گيرنده مجددا" براي سرويس دهنده و اين مرتبه به همراه مجوز صادر شده توسط Passport.com ، ارسال مي گردد. IIS ، مجددا" سرويس گيرنده را به عنوان Anonymous تائيد و درخواست وي را براي برنامه وب ASP.NET ارسال مي نمايد .
• برنامه وب ASP.NET تائيد کاربر را بر اساس مجوز صادر شده براي وي توسط Passport.com ، انجام داده و صفحه وب درخواستي را براي سرويس گيرنده ارسال مي نمايد .
• پس از تائيد کاربر توسط Passport.com ، امکان دستيابي وي به ساير وب سايت هائي که از روش Passport Authentication استفاده مي نمايند ، وجود خواهد داشت .

فعال نمودن روش Passport Authentication

به منظور استفاده از روش Passport Authentication در يک برنامه وب ، مي بايست Passport SDK را بر روي سيستم نصب نمود. ( براي دريافت نرم افزار مي توان از آدرس http://msdn.microsoft.com/download ، استفاده نمود ) . براي فعال نمودن روش PassportAuthentication مراحل زير را دنبال مي نمائيم :
• نصب Passport SDK . ( با اينکه نرم افزار فوق به همراه ويژوال استوديو ارائه نشده است ،ولي فريمورک دات نت داراي کلاس هاي لازم به منظور کار با Passport SDK پس از نصب آن مي باشد ) .
• اعمال تغييرات لازم در فايل Web.config : نوع Authentication به Passport و مقدار عنصر Authorization به Deny براي کاربران تائيد نشده
• استفاده از رويداد PassportAuthentication_OnAuthenticate به منظور دستيابي به پروفايل اطلاعات کاربران و شناسائي آنان
• پياده سازي روتين Sign-out به منظور حذف کوکي هاي Passport از روي ماشين کاربران
فايل Web.config زير ، روش Passport Authentication را فعال و تمامي کاربران را ملزم به تائيد به منظور استفاده از برنامه وب مي نمايد .

Web.Config  setting

 <authentication mode="Passport" />
<authorization>
     <adeny users="?" />  
</authorization>


زمانيکه برنامه وب بصورت محلي و با توجه به تنظيمات فوق ، اجراء مي گردد ، کاربر مستقيما" به صفحه Signin پاسپورت هدايت مي گردد. در صورتيکه نسخه unlicense نرم افزار Passpport SDK ، نصب شده باشد ، صفحه Signin مشابه صفحه ارائه شده در زمان بکارگيري واقعي يک سايت نخواهد بود. پس از Sign in کاربر ، Passport کوکي تائيد کاربر را بر روي ماشين سرويس گيرنده ذخيره و وي را به صفحه اوليه درخواستي هدايـت و يک پروفايل اطلاعاتي در ارتباط با کاربر را ذخيره مي نمايد . به منظور دستيابي به پروفايل فوق مي توان از رويداد PassportAuthentication_OnAuthenticate ، در Global.asax استفاده نمود :

Global.asax module

 Imports System.Web.Security
Private Sub PassportAuthentication_OnAuthenticate( ByVal  Sender As Object , ByVal e As PassportAuthenticationEventArgs )
  If e.Identity.IsAuthenticated Then
       Response.Write(" Name : " & e.Identity.Item("FirstName")  &" " &  e.Identity.Item("LastName") & "<br>")
       Response.Write("Address : " & e.Identity.Item("City") & "  " & e.Identity.Item("PostalCode") & "<br>" )
       Response.Write("Email  : " & e.Identity.Item("PreferredEmail") & "<br>" )
       Response.Write("Passport ID :   " & e.Identity.Name & "<br>" )
   End If
End Sub

کد فوق ، نام ، آدرس و ساير اطلاعات کاربر را از طريق پروفايل مربوطه دريافت و آنان را نمايش مي دهد.
مجوز صادر شده Passport به همراه اطلاعات پروفايل در پنج کوکي جداگانه بر روي ماشين سرويس گيرنده ، ذخيره مي گرندد. پس از Sign out کاربر از برنامه وب ، مي بايست کوکي هاي فوق حذف گردند . رويداد زير ، نحوه عمليات Sign out را از طريق حذف کوکي هاي مرتبط با Passport نشان مي دهد :

Sign out Event Procedure

Private Sub butSignOut_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butSignOut.Click
   Response.Cookie("MSPProf").Expires          = Now
   Response.Cookie("MSPAuth").Expires        = Now
   Response.Cookie("MSPSecAuth").Expires  = Now
   Response.Cookie("MSPProfC").Expires        = Now
   Response.Cookie("MSPConsent").Expires   = Now
   Response.Redirect("UserInfo.aspx") 
End Sub

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image