آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

نگاهی به احراز هویت فرم‏ها

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 شما می‏توانید نقش‏های مجوزدهی آدرسی برای فایل‏ها و یا هر نوع دیگر، تعیین کنید.



[1] Internet Information Services (IIS)

نگهداری برچسب احراز هویت در خلال بازدید صفحات

بعد از ورود، برچسب احراز هویت فرم‏ها باید روی هر درخواست به وب سرور بازگردانده شود تا کاربر تا هنگامی که سایت را  مرور می‏کند، در حالت ورود بماند. این کار معمولا با نگهداری برچسب احراز هویت در مجموعه کوکی‏های کاربر انجام می‏شود. کوکی‏ها فایل‏های متنی کوچکی هستند که روی رایانه کاربر ایجاد می‏شوند و در سرآیند 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 این وضعیت را کشف کرده و آن را با هدایت کاربر به صفحه ورود اصلاح می‏کند.

صفحه ورود مسئولیت دارد اعتبار کاربر را تعیین کند، اگر معتبر بود، یک برچسب احراز هویت فرم‏ها ایجاد کند و کاربر را به صفحه‏ای که می‏خواسته ببیند هدایت کند.