FormsAuthenticaionModule کدهایی که قسمتی از اجرایASP.NET هستند، را مدیریت میکند. قبل از نسخه 7 وب سرور خدمات اطلاعات اینترنت مایکروسافت[1] یک مانع بین خط HTTP مربوط به IIS و خط HTTP مربوط به اجرایASP.NET وجود داشت. به طور خلاصه، در IIS نسخه 6 و قبل از آن، FormsAuthenticaionModule فقط زمانی که یک درخواست از IIS برای اجرایASP.NET صادر شده بود، اجرا میشد. به طور پیش فرض IIS محتوی را به طور ایستا پردازش میکند (مانند صفحات HTML و CSS و فایلهای تصویری) و فقط وقتی یک صفحه با پسوند .aspx و یا .asmx و یا .ashx درخواست شده باشد، درخواست اجرایASP.NET را میدهد.
اما، IIS 7 اجازه میدهد خطوط IIS وASP.NET با هم یکی شوند. با کمی تنظیمات پیکربندی شما میتوانید IIS 7 را طوی تنظیم کنید که FormsAuthenticaionModule را برای تمامی درخواستها، فراخوانی کند. از این گذشته، در IIS 7 شما میتوانید نقشهای مجوزدهی آدرسی برای فایلها و یا هر نوع دیگر، تعیین کنید.
بعد از ورود، برچسب احراز هویت فرمها باید روی هر درخواست به وب سرور بازگردانده شود تا کاربر تا هنگامی که سایت را مرور میکند، در حالت ورود بماند. این کار معمولا با نگهداری برچسب احراز هویت در مجموعه کوکیهای کاربر انجام میشود. کوکیها فایلهای متنی کوچکی هستند که روی رایانه کاربر ایجاد میشوند و در سرآیند HTTP روی هر درخواستی از سایتی که کوکی را ایجاد کرده است، انتقال پیدا میکنند. بنابراین یکبار برچسب احراز هویت فرمها ایجاد و در کوکیهای مرورگر نگهداری میشود، در بازدیدهای بعدی، برچسب احراز هویت همراه با درخواست ارسال میشود، در نتیجه کاربر شناسایی میگردد.
یکی از ویژگیهای کوکیها انقضاء آنهاست، که زمان و تاریخی است که مرورگر کوکی را نابود میکند. وقتی کوکی برچسب احراز هویت منقضی میشود، کاربر نمیتواند تایید شود و بنابراین ناشناس قلمداد میگردد. وقتی کاربر از یک ترمینال عمومی برای دیدن سایت استفاده میکند، بهتر است با بستن مرورگر برچسب احراز هویت او منقضی شود. وقتی کاربر از خانه سایت را بازدید میکند، ممکن است بخواهد برچسب احراز هویت او در خلال اجراهای مرورگر نگهداری شود چون او نمیخواهد در هر بار بازدید از سایت عملیات ورود را انجام دهد. این تصمیم اغلب با تیک زدن CheckBox «مرا به یاد داشته باش» در صفحه ورود انجام میشود.
وقتیASP.NET شروع به پردازش یک درخواست برای یک منبعASP.NET ، همچون صفحهASP.NET و یا وب سرویسASP.NET میکند، تعدادی رویداد در زمان چرخ حیات درخواست روی میدهد. اجرای رویدادها از ابتدای شروع درخواست تا انتهای پایان آن ادامه دارد، بعضی از آنها هنگامی که احراز هویت و مجوز دهی درخواست شروع میشود، بعضی وقتی خطایی روی میدهد، و از این دست.
ماژولهای HTTP کلاسهایی که کدهای آنها در جواب یک رویداد خاص در چرخه حیات درخواست اجرا میشوند را مدیریت میکنند. در پشت پردهASP.NET همراه با ماژولهای HTTP فرستاده میشود. دو ماژول درون HTTP که به طور ویژه به بحث ما مربوط میشوند عبارتند از:
· FormsAuthenticaionModule: با بررسی برچسب احراز هویت فرمها، که معمولا در مجموعهی کوکیهای کاربر وجود دارد، کاربر را احراز هویت میکند. اگر برچسب احراز هویت ارائه نشود، کاربر ناشناس قلمداد میشود.
· UrlAuthorizationModule: در هر زمان تعیین میکند کاربر جاری مجاز به دسترسی به نشانی درخواست شده است یا خیر. این ماژول مجوز را با بررسی نقشهای مجوزدهی در فایل پیکربندی برنامه صادر میکند.
FormsAuthenticaionModule تلاش میکند کاربر را قبل از اجرای UrlAuthorizationModule احراز هویت کند. اگر درخواست کاربر مجاز به دسترسی به منبع درخواست شده نباشد، ماژول مجوزدهی به درخواست پایان میدهد و وضعیت HTTP 401 Unauthorized را میگرداند. در روش احراز هویت Windows وضعیت HTTP 401 به مرورگر برگردانده میشود. این کد وضعیت باعث میشود مرورگر کاربر را به وارد کردن اعتبارنامهاش از طریق یک کادر محاورهای وادار کند. اما با احراز هویت فرمها، وضعیت HTTP 401 Unauthorized هیچ وقت به مرورگر فرستاده نمیشود، در عوض FormsAuthenticaionModule این وضعیت را کشف کرده و آن را با هدایت کاربر به صفحه ورود اصلاح میکند.
صفحه ورود مسئولیت دارد اعتبار کاربر را تعیین کند، اگر معتبر بود، یک برچسب احراز هویت فرمها ایجاد کند و کاربر را به صفحهای که میخواسته ببیند هدایت کند.