כדי לזהות משתמשים ב ASP.NET קיימת התכונה הנקראת Forms authentication. התכונה מאפשרת למפתחים לשמור את המידע אודות זיהוי המשתמשים בקובץ ה web.config. או להשתמש בשיטות אחרות כמו שמירה של הנתונים בבסיס הנתונים, בקבצי XML או בקבצי טקסט. הדבר הנחמד ב Forms authentication הוא שאין צורך יותר לתכנת מערכות אישורים וזיהויים, ה ASP.NET עושה בשבילנו את כל העבודה.
Forms authentication משתמש בעוגיות כדי לעקוב אחר המשתמשים באפליקציה בזמן ביקורם באתר. הדרך בה ה ASP.NET מטפל ב Forms authentication הנה קרוב לודאי דרך דומה לזו שהמתכנת השתמש ב ASP הקלאסי. כאשר המשתמש מבצע כניסה לאתר דרך טופס זיהוי, נוצרת עוגיה אשר עוקבת אחר המשתמש בביקורו באתר. אם המשתמש קורא לדף מאובטח ועדיין לא ביצע Login למערכת, המשתמש ישלח אל דף הכניסה. רק כאשר המשתמש זוהה בהצלחה הוא יועבר את הדף האורגינלי לו הוא קרא. ב Forms authentication הסטנדרטי כל המשתמשים שמורים בתוך קובץ web.config .
Web.config
אחת הדרכים בהם משתמשים בכדי לקבוע קונפיגורציות באפליקציות ASP.NET זה הקובץ web.config . הרעיון שמאחורי ה Web.config זה לתת למתכנת את האפשרות לשלוט על האפליקציה שלו במקום לשים אותם בידיים של מנהל המערכת. יש המון אפשריות להשתמש ב web.config במאמר הזה נבחן רק אחת מהן שהיא זיהוי משתמש בסיסי ע"י Form Authentication .
ה Web.config משתמש במתודות זיהוי סטנדרטיות או בעלות כתבי אמנה (Credentials).
תכונות (Attributes) אימות
| התכונה |
תיאור התכונה |
| Name |
שם העוגיה שמשמשת לזיהוי. |
| Path |
המסלול שבשימוש העוגייה, ברירת המחדל "/" בדרך כלל מונעת הודעות שגיאה. |
| LoginUrl |
ה URL אליו ישלח המשתמש לאחר שיזוהה. |
| Protection |
מתודה להגנת נתוני העוגייה, ברירת המחדל וההצעה היא לשימוש ב “All”, שגם מבצעת את הזיהוי וגם מקודדת את הנתונים. |
| Timeout |
הזמן עד שמועד עוגיית הזיהוי יפקע. |
תכונות לכתבי אמנה
| התכונה |
תיאור התכונה |
| passwordFormat |
הפורמט בו הסיסמא תשמר. |
| User |
זה האיזור בו ישמר שם המשתמש והסיסמא, אפשר לאבטח את הסיסמא ע"י הרצת הפונקציה HashPasswordForStoringInConfigFile בכדי לקבל סיסמא מעורבבת. |
תכונות אישור
| התכונה |
תיאור התכונה |
| Deny | Allow |
התכונה הזאת משמשת לאשר או לסרב למשתמש להכנס לאתר. ?= מתכוון למשתמשים אנונימיים או מזוהים. * מתכוון לכל המשתמשים. באזור הזה אפשר גם להוסיף משתמשים מסוימים ואפשר לאשר או לסרב הרשאות. |
כך נראה קובץ של web.config . הקובץ הוא במבנה XML .
בתוך הקובץ הזה ביצענו מספר קונפיגורציות:
זיהוי
בתכונה authentication נקבעה צורת הזיהוי ע"י טופס. בתוך ה forms אנחנו קובעים את תכונת ה Name של העוגיה ל “AppNameAuth” .אפשר לשנות את שם העוגיה לכל דבר כמו MyWebAuth לדוגמא כאשר MyWebAuth הנו שם האפליקציה בה אנחנו משתמשים. כדאי לזכור שאם על אותו מחשב יהיו מספר אפליקציות יש להשתמש בשמות ייחודיים לכל עוגיה.
בשלב הבא קובעים את המסלול של ספריית השורש של האפליקציה, לתכונה loginUrl נ יתן את שם קובץ בדיקת הכניסה המקומי login.aspx. לתכונת סוג ההגנה ניתן All, מה שאומר שעוגיות יעברו קידוד ע"י שיטות קידוד סטנדרטיות של מערכת ההפעלה, ואימות.
האלגוריתמים של הקידוד בא מתוך האלמנט machineKet הנמצא בקובץ Machine.config הקובץ הזה הנו קובץ שמותקן ע"י מסגרת ה .NET סוג זה של אימות נתונים מאבטח שנתוני העוגיה לא הושפעו בזמן המעבר מהלקוח לשרת.
התכונה timeout קובעת את הזמן בדקות שיעבור עד שמועד הסיום של העוגיה יפקע והמשתמש יצטרך לעשות Login מחדש.
בתכונת ה Credentials אנחנו מוסיפים משתמשים. וסיסמאות. לכאן ילך ה FormAuthentication לאמת את נתוני המשתמש.
אישור
כל לוגיקת הזיהוי מתבצעת בקובץ זה. לא משנה אייך אתה רוצה לאמת את נתוני המשתמש, מתוך קובץ ה web.config בסיס נתונים, קובץ XML או קובץ טקסט. בקובץ ה login.aspx מתבצע כל התהליך.
היות ואנחנו עובדים עם זיהוי משתמשים אנחנו יוצרים reference ל Namespace של ה System.Web.Security . כל המתודות של הזיהוי ב ASP.NET עולות מתוך ה Namespace. Form authentication הנו קלאס בתוך ה System.Web.Security namespace . בקובץ הזה יש לנו טופס צד שרת פשוט המכיל תיבת טקסט לשם המשתמש ותיבת טקסט לסיסמא שלו. נוסף לכך תיבת סימון "זכור אותי" במידה והמשתמש רוצה לקבוע עוגיה קבועה אצלו במחשב. לכפתור השליחה יש אירוע onClick שיריץ את הפרוצדורה ProcessLogin. בתוך ה ProcessLogin אנחנו מבצעים את מתודת הזיהוי של הקלאס FormsAuthentication , מעבירים אליה את שם המשתמש וסיסמתו. המתודה בודקת את אזור Credentials בתוך קובץ ה web.config עבור שם המשתמש והסיסמא. אם הם תואמים מתבצעת המתודה RedirectFromLoginPage עם שם המשתמש ומעבירה את המשתמש לדף האורגינלי שנקרא על ידו. המתודה גם כותבת עוגיה במחשב המשתמש כדי לעקוב אחריו ולהבטיח את הזיהוי שלו. אם השם והסיסמא אינם תואמים, מתבצעת שגיאה והמשתמש מקבל הודעה על כך. |