بررسی سرويس های Membership و Roles در ASP.NET 2.0 New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 يکشنبه  8  اسفند  1395  2017  Feb.  26   Sunday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 سرويس های Membership و Roles در ASP.NET 2.0 ( بخش دوم )

 مديريت وب

12521

20

4.6

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

ضرورت توجه به امنيت اطلاعات

سرويس های Membership و Roles در ASP.NET 2.0 ( بخش دوم )
در بخش اول به امكانات  ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 در خصوص تائيد و اعطاء مجوزهای لازم به كاربران به منظور استفاده از تمام و يا بخش هائی خاص از يك وب سايت اشاره گرديد . در اين بخش به بررسی  سرويس جديد membership در ASP.NET 2.0 و نحوه استفاده از آن در برنامه های وب خواهيم پرداخت . قبل از هر چيز اجازه دهيد مجددا" اين نكته را يادآور شويم كه فرآيند Authentication در ASP.NET 2.0 از طريق سرويس membership  و فرآيند Authorization از طريق سرويس Roles انجام می شود.

تائيد كاربران در ASP.NET 2.0
ASP.NET 2.0 ، سرويس membership را به منظور تائيد كاربران جهت دستيابی به تمام صفحات و يا صفحاتی خاص از يك وب سايت ارائه نموده است . سرويس فوق ، علاوه بر ارائه يك API جديد برای مديريت كاربران ، كنترل های سرويس دهنده جديدی را به منظور پياده سازی فرآيند تائيد در اختيار پياده كنندگان قرار می دهد.

چگونه می توان از سرويس membership استفاده نمود ؟
قبل از اين كه بتوان از كنترل های سرويس دهنده امنيتی استفاده نمود ، می بايست در ابتدا پيكربندی برنامه را بگونه ای انجام داد كه امكان استفاده از سرويس  membership فراهم گردد .
به صورت پيش فرض ، ASP.NET 2.0 از AspNetSqlProvider برای ذخيره جزئيات اطلاعات مربوط به كاربران ريجستر شده استفاده می نمايد .
يكی از دستاوردهای مهم   ASP.NET 2.0  ، ارائه يك data provider model است كه مسئوليت جزئيات عمليات مديريتی مورد نياز برای ارتباط با چندين نوع منبع داده را برعهده می گيرند .
شكل زير ، سرويس جديد membership در ASP.NET 2.0 را نشان می دهد .


منبع : سايت مايكروسافت

همانگونه كه در شكل فوق مشاهده می نمائيد ، Membership provider  ( همانند ساير ASP.NET 2.0 Provider models  ) قادر به دستيابی مجموعه ای گسترده از منابع داده است . در شكل فوق ، صرفا" منبع داده SQL Server ( گزينه پيش فرض ) نشان داده شده است . پياده كنندگان می توانند در صورت تمايل اقدام به پياده سازی  membership provider اختصاصی خود نموده تا به كمك آن با ساير منابع داده ارتباط برقرار نمايند . در شكل فوق ، همچنين مجموعه ای از كنترل های سرويس دهنده امنيتی كه امكان دستيابی به Provider model برای پياده سازی فرآيند تائيد كاربران را فراهم می نمايند ، مشاهده می گردد .

افزودن عنصر <authentication> در فايل web.config
برای استفاده از تائيد كاربران مبتنی بر فرم در يك برنامه وب جهت بكارگيری سرويس جديد membership ، اولين مرحله فعال كردن ويژگی فوق از طريق فايل web.config است . در صورت عدم وجود فايل web.config ، در ابتدا آن را ايجاد و بخش زير را به آن اضافه می نمائيم :

<?xml version=1.0 encoding="utf-8" ?>
   <configuration>
     <system.web>
        <authentication mode="Forms" />
     </system.web>
    </configuration>

با اضافه كردن عنصر <authentication> به فايل web.config ، امكان استفاده از تمامی پتانسيل های سرويس membership ارائه شده توسط ASP.NET 2.0 فراهم می گردد . بدين منظور می بايست مقدار خصلت mode ، معادل Forms در نظر گرفته شود ( خصلت فوق می تواند مقادير ديگری نظير  windows ,passport و None را داشته باشد ) .

افزودن عنصر <forms> به فايل web.config
استفاده از تائيد مبتنی بر فرم ، كاربران را ملزم به درج نام و رمز عبور خود در يك فرم خاص می نمايد . زمانی كه يك كاربر قصد دستيابی به يك وب سايت را داشته باشد ، در ابتدا وی به صورت يك كاربر ناشناس ( anonymous ) وارد سايت می گردد . در صورتی كه تشخيص داده شود كه  كاربر ناشناس است ، ASP.NET  وی را به يك صفحه خاص login هدايت می نمايد . پس از درج نام و رمز عبور و تائيد هويت كاربر ، برای وی يك HTTP cookie ايجاد كه از آن در درخواست های آتی استفاده می گردد . كد زير نحوه تعريف يك فرم در فايل web.config را نشان می دهد .

<?xml version=1.0 encoding="utf-8" ?>
    <configuration>
       <system.web>
          <authentication mode="Forms">
               <forms name=".ASPXAUTH"
                   loginUrl="login.aspx"
                   protection="All"
                   timeout="30"
                   path="/"
                   requireSSL="false"
                   slidingExpiration="true"
                   cookieless="useDeviceProfile" />

           </authentication>
     </system.web>
   </configuration>

 توضيحات :  

  •  عنصر <forms>  می بايست درون عنصر <authentication> تعريف گردد.

  • خصلت name ، نام كوكی ارسالی برای كاربران تائيد شده را مشخص می نمايد . نام كوكی به صورت پيش فرض ، ASPXAUTH . در نظر گرفته می شود .

  • loginUrl ، صفحه login را مشخص می نمايد . ( در صورتی كه كوكی با نام ASPZAUTH . و يا هر نام ديگری پيدا نشود ) . به صورت پيش فرض مقدار اين خصلت login.aspx در نظر گرفته می شود .

  •  Protection ، ميزان حفاظت اعمال شده در خصوص كوكی ذخيره شده بر روی ماشين كاربر  را مشخص می نمايد . خصلت فوق می تواند يكی از مقادير   All ,None , Encryption و Validation را دارا باشد كه معمولا" از گزينه All استفاده می گردد .

  • timeout ،  مدت زمان حيات يك كوكی را مشخص می نمايد ( بر حسب دقيقه ) . مقدار پيش فرض سی دقيقه است .

  • Path ، مسير ذخيره كوكی را مشخص می نمايد .

  • requireSSL ، مشخص می نمايد كه آيا اطلاعات حساس كاربر شامل نام و رمز عبور می بايست به صورت رمز شده و از طريق پروتكل SSL ارسال گردد .

  • slidingExpiration ، مدت زمان timeout كوكی را در يك sliding scale مشخص می نمايد. با توجه به اين كه مقدار گزينه فوق به صورت پيش فرض True در نظر گرفته می شود، كوكی ايجاد شده بر روی ماشين كاربر سی  دقيقه ( مقدار مشخص شده توسط خصلت timeout ) پس از آخرين درخواست اعتبار خواهد داشت . در صورتی كه مقدار خصلت فوق False در نظر گرفته شود ، اعتبار كوكی پس از گذشت سی دقيقه از اولين درخواست به اتمام خواهد رسيد .

  • cookieless ، نحوه مديريت كوكی توسط ASP.NET را مشخص می نمايد . خصلت فوق می تواند يكی از مقادير  useDeviceProfile , UseCookies ,auto ،  useUrl را دارا باشد . مقدار پيش فرض ، useDeviceProfile در نظر گرفته می شود و نحوه مديريت كوكی بر اساس user agent دستگاه سرويس گيرنده انجام خواهد شد . 

 محل ذخيره اطلاعات كاربران در سرويس membership
SqlMemberShipProvider ، يكی از دو Membership Provider است كه به همراه ASP.NET 2.0 ارائه شده است و از يك بانك اطلاعاتی SQL Server به منظور ذخيره اطلاعات كاربران استفاده می نمايد . به منظور استفاده از Provider فوق ، می بايست يك DataBase schema ايجاد تا در ادامه provider  بتواند از آن استفاده نمايد . به منظور انجام اين كار می توان از دو روش زير استفاده نمود :

  • استفاده از ابزار مديريت ASP.NET website : با استفاده از ابزار فوق يك database schema در يك فايل SQL server 2005 ( فايل ASPNETDB.mdf ) و در فولدر App_Data ايجاد می گردد .

  • استفاده از ابزار خط دستوری ASP.NET SQL Server Registration tool ( فايل aspnet_regsql.exe )

برای استفاده از ابزار مديريت ASP.NET website  ، پس از اجرای ويژوال استوديو دات نت 2005 ، از طريق منوی Website گزينه ASP.NET configuration را انتخاب می نمائيم . در ادامه و از طريق Security Tab ، نوع authentication را به "From internet" تغيير می دهيم . مراحل فوق را می توان از طريق لينك موجود در Authentication box و يا توسط Security Setup Wizard و دنبال نمودن مراحل مربوطه ، انجام داد . 


 ابزار مديريت ASP.NET website 



با انجام مراحل فوق ، به صورت اتوماتيك يك بانك اطلاعاتی با نام ASPNETDB.mdf در فولدر App_Date ايجاد كه دارای ساختار از قبل تعريف شده ای است . 


ايجاد بانك اطلاعاتی ASPNETDB.mdf

در مواردی كه از ابزار مديريت وب سايت برای مشخص كردن نوع authentication  ، به "From internet" استفاده می گردد، خط زير به فايل web.config اضافه می گردد  :

<?xml version=1.0 encoding="utf-8" ?>
   ...
        <authentication mode="Forms" />
   ...

در صورتی كه لازم است اطلاعات كاربران را در مكانی ديگر ذخيره نمود ( در يك بانك SQL Server 2000 و يا يك بانك SQL Server 2005 كه در فولدر App_data موجود نمی باشد ) ، می بايست از ابزار aspnet_regsql.exe استفاده نمود .
در صورتی كه ايجاد Schema از طريق ASP.NET SQL Server Registration tools انجام شود ، می بايست  عبارت اشاره شده به صورت دستی در فايل web.config اضافه گردد  . در صورتی كه Schema در يك بانك اطلاعاتی ديگر غير از ASPNETDB.mdf و فولدر App_Data باشد ، لازم است كه پيكربندی membership را در فايل web.config سفارشی و connection string مربوطه را مشخص نمود .
SqlMemberShipProvider اطلاعات مربوط به كاربران را در دو جدول زير ذخيره می نمايد :

  • aspnet_users ، برای هر user account دارای يك سطر است كه اطلاعات پايه را نگهداری می نمايد . ستون UserID به صورت منحصربفرد هر كاربر را در سيستم مشخص و به صورت يك  uniqueidentifier ذخيره می نمايد ( يك GUID ) .

  • aspnet_membership  ، دارای يك ستون UserId است كه هر ركورد را به يك ركورد خاص در aspnet_membership مرتبط می نمايد. جدول فوق ، اطلاعات مرتبط با هر account نظير email,password و ساير موارد را در خود ذخيره می نمايد .


ساختار بانك اطلاعاتی ASPNETDB.mdf

سفارشی نمودن SqlMembershipProvider
در صورت استفاده از SqlMembershipProvider با تنظميات پيش فرض (اطلاعات مربوط به كاربران در فايل ASPNETDB.mdf  سرويس دهنده SQL 2005 و درفولدر App_Data ذخيره می گردد ) ، ضرورتی به اعمال تغييرات در فايل  web.config نمی باشد. در غير اينصورت ، می بايست از  تائيديه مبتنی بر فرم استفاده شود و قوانين لازم جهت مجوزها نيز مشخص گردد .
در صورتی كه قصد استفاده از يك بانك اطلاعاتی ديگر را داشته باشيم و يا بخواهيم برخی تنظميات memebership را تغيير دهيم ( حداقل طول رمز عبور ، نحوه ذخيره رمز عبور به صورت plain text ، hashed و يا رمزشده  و ... ) ، می بايست تنظميات سفارشی را در فايل web.config ثبت نمود .
نمونه كد  زير نحوه سفارشی نمودن تنظيمات MemeberShipProvider را نشان می دهد .

<configuration>
  <connectionStrings>
     <add name="MyDB" connectionString="..." />
   </connectionStrings>
  <system.web>  
      <membership defaultProvider="CustomizedProvider">
         <providers>
             <add name="CustomizedProvider"
                     type="System.Web.Security.SqlMembershipProvider"
                     connectionStringName="MyDB"
                     minRequiredPasswordLength="5"
                     minRequiredNonalphanumericCharacters="0" />
      </providers>

   </membership>
  </system.web>
</configuration>

در <membership> ، يك provider جديد با نام CustomizedProvider تعريف تا membership provider پيش فرض را ايجاد می نمايد . provider سفارشی فوق ، همچنان از SqlMemberShipProvider استفاده می نمايد و صرفا" برخی مقادير مربوطه سفارشی شده است .
پس از پيكربندی ASP.NET website ، جهت استفاده از سيستم Membership می توان مديريت كاربران سايت را از طريق ابزار مديريت وب سايت ASP.NET انجام داد . پس از فعال شدن برنامه فوق با استفاده از Security tab و كليك بر روی لينك Create User می توان يك كاربر جديد را ايجاد و يا از طريق لينك manage users اقدام به ويرايش و يا حذف ركوردهای موجود كاربران نمود . 
در بخش سوم با نحوه استفاده از برخی كنترل های امنيتی جهت استفاده از سرويس membership آشنا خواهيم شد.



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382