پیاده سازی امنیت در یک وب سایت دارای جنبه های زیر می باشد: 1.Authentication : (احراز هویت/اعتبار سنجی): به فرایند کسب اطمینان و اعتبار سنجی هویت و اعتبار کاربر اطلاق می گردد. در ASP.NET چهار نوع مختلف اعتبار سنجی وجود دارد: Windows Authentication (اعتبار سنجی از طریق windows) Forms Authentication (اعتبار سنجی از طریق فرم) Passport Authentication (اعتبار سنجی از طریق رمز عبور) Custom Authentication .2 Authorization (اعطاء مجوز): فرایندی است که تعیین می کند آیا کاربری با هویت معین مجوز دسترسی به منبع مشخصی را دارد یا خیر؛ به فرایندی گفته می شود که طی آن نقش های مشخصی برای کاربرها تعریف شده سپس به آن ها تخصیص داده می شود. 3. Confidentiality (قابلیت اعتماد): طی این پروسه مجرای ارتباطی (channel) بین مرورگر سرویس گیرنده (client browser) و سرویس دهنده ی وب (web server) رمز گذاری می شود. 4. Integrity (جامعیت): جامعیت داده ها را تظمین می کند. به عنوان مثال می توان به پیاده سازی امضای دیجیتالی (نوعی رمزنگاری نامتقارن) اشاره کرد.
اعتبار سنجی مبتنی بر فرم احراز هویت کاربر از طریق فرم شامل ویرایش فایل web.config و افزودن یک صفحه ی ثبت ورود (login page) به همراه کد مجوز یا اعتبار سنجی (authentication code) می باشد. فایل web.config را می توان ویرایش کرده و کدهای زیر روی آن نوشت: کد: < configuration > < system.web > < authentication mode="Forms" > < forms loginUrl ="login.aspx"/ > < /authentication > < authorization > < deny users="?"/ > < /authorization > < /system.web > ... ... < /configuration >
صفحه ی login.aspx که در تکه کد فوق آن را ذکر کردیم می تواند code behind file زیر را به همراه اسم کاربری (username) و رمز عبور (password) برای احراز هویت به صورت hard code شده در خود داشته باشد. کد: protected bool authenticate(String uname, String pass) { if (uname == "Tom") { if (pass == "tom123") return true; } if (uname == "Dick") { if (pass == "dick123") return true; } if (uname == "Harry") { if (pass == "har123") return true; } return false; } protected void OnLogin_Click(object sender, EventArgs e) { if (authenticate(txtuser.Text.Trim(), txtpwd.Text.Trim())) { FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked); } else { Response.Write("Invalid user name or password"); } }
توجه داشته باشید که کلاس FormsAuthentication مسئول اجرای فرایند احراز هویت می باشد. با این وجود Visual Studio به شما امکان می دهد پروسه های ایجاد user، احراز هویت و اعطاء مجوز (authorization) را بدون نوشتن هیچ گونه کد و تنها از طریق ابزار Web Site Administration انجام دهید. ابزار نام برده به برنامه نویس اجازه ی ایجاد user و تخصیص role یا نقش معین به user ایجاد شده را می دهد. جدا از امکانات یاد شده ASP.NET دارای مجموعه کنترل های login آماده و از پیش ساخته می باشد که تمامی کارهای لازم را برای شما انجام می دهند.
پیاده سازی امنیت و احراز هویت از طریق فرم به منظور راه اندازی احراز هویت کاربر از طریق فرم به موارد زیر نیاز دارید: یک پایگاه داده که از فرایند احراز هویت پشتیبانی می کند یک وب سایت که از پایگاه داده استفاده می کند حساب کاربری (user account)
Role محدود سازی user و group activity ها یک صفحه ی پیش فرض که وضعیت ثبت ورود (login status) کاربرها و دیگر اطلاعات مربوطه را نمایش دهد یک صفحه ی login که کاربرها با استفاده از بتوانند وارد شده، رمز عبور را بازیابی و یا آن را تغییر دهند جهت ایجاد user جدید مراحل زیر را دنبال کنید: با انتخاب گزینه ی Website -> ASP.NET Configuration، ابزار Web Application Administration Tool را باز کنید. حال روی تب security کلیک کنید.
اکنون با کلیک روی لینک 'Create Users' تعدادی user ایجاد کنید. چنانچه از پیش role هایی را ویژه ی user ها ایجاد کرده اید، در این مرحله می توانید آن ها را به user مورد نظر اختصاص دهید.
یک وب سایت ایجاد کرده، سپس صفحات زیر را به آن اضافه کنید: Welcome.aspx Login.aspx CreateAccount.aspx PasswordRecovery.aspx ChangePassword.aspx یک کنترل LoginStatus از بخش login toolbox روی صفحه ی Welcome.aspx قرار دهید. دارای دو قالب (template) می باشد: LoggedIn و LoggedOut . در قالب LoggedOut، یک لینک login وجود دارد و در قالب LoggedIn یک لینک logout مشاهده می کنید. می توان text properties کنترل مورد نظر را از طریق پنجره ی Properties تغییر داد.
یک کنترل LoginView از toolbox انتخاب کرده و آن را زیر کنترل LoginStatus قرار دهید. اینجا می توانید text و دیگر کنترل های دلخواه (hyperlink، button و غیره .. ) را جای گذاری کنید که بسته به وضعیت login کاربر (اینکه وارد شده یا خیر) نمایش داده می شوند. این کنترل دارای دو view template می باشد: Anonymous template و LoggedIn template. اکنون متنی ویژه ی هر view تنظیم کرده که توسط template نمایش داده می شود. توجه داشته باشید که متن باید در ناحیه ی قرمز رنگ تایپ شود.