מדריך ASP.NET – אבטחה: פקדי Login

‏ • Sela

ב – ASP.NET קיימים פקדים מיוחדים עבור כל הקשור ל – Login, רישום למערכת וכו'. במדריך זה נכיר את הפקדים השונים אשר נמצאים ב-Toolbox תחת קטגורית Login, מהו תפקידו ואיך מחברים אותו למערכת.

ASPNET - פקדי Login

הכנה

על-מנת לעבוד עם פקדי Login, נצטרך להגדיר את ה-Membership Provider כפי שמוסבר במאמר מדריך ASP.NET – אבטחה: הגדרת משתמשים וקבוצות.

פקד Login

פקד זה משמש אותנו ליצירת מסך התחברות למערכת.

נוסיף דף חדש למערכת בשם Login.aspx, ונגרור את פקד ה – Login לתוך הדף.

ב – web.config נוסיף תחת ה-<system.web> אלמנט בשם authentication שבאמצעותו נגדיר את אופן ההזדהות באפליקציה.

מאחר ואנו נרצה להזדהות באמצעות שם וסיסמה, נגדיר את ה-mode ל-Forms ונציין שיש להציג את דף ה-Login שבנינו בכניסה למערכת, באופן הבא:

<system.web>
  <
authentication mode="Forms"
>
    <
forms loginUrl="login.aspx" name=".ASPXFORMSAUTH"
/>
  </
authentication
>
</
system.web
>

על מנת למנוע מצב שמשתמשים לא מזוהים (Anonymous) יכנסו למערכת נוסיף תחת ה-system.web גם הגדרת הרשאות (Authorization) באמצעות האלמנט authorization:

<authorization>
  <
deny users="?"
/>
</
authorization
>

הגדרת deny מאפשרת לנו להגדיר אילו משתמשים אינם מורשים להכנס למערכת. סימן השאלה (?) מגדיר את המשתמש ה”אנונימי”.

פקד LoginStatus

הפקד הזה מציג קישור ל – Log in או Log out בהתאם להאם המשתמש מחובר או לא.

אפשר לראות את השינוי בכיתוב כבר ב – Designer כאשר לוחצים על החץ המסומן בעיגול:

ASPNET - פקד LoginStatus

כאשר אנחנו נמצאים במצב של Logged out הכיתוב יהיה Login , וכאשר אנחנו במצב של Logged in הכיתוב יהיה Logout:

 
ASPNET - פקד LoginStatus במצב Logged In
 
ASPNET - פקד LoginStatus במצב Logged Out

את הכיתובים האלו ניתן לשנות ע"י שינוי המאפיינים LogInText ו – LogOutText של הפקד. מאפיין חשוב נוסף הוא LogOutPageUrl – הדף אליו מופנה המשתמש לאחר Log out.

פקד LoginView

פקד זה מאפשר לנו להציג כיתוב שונה עבור משתמש מזוהה (Logged In) ועבור משתמש בלתי מזוהה (Anonymous).

לצורך כך קיימים שני מאפיינים – LoggedInTemplate ו – AnonumousTrmplate בהתאמה. נראה דוגמה לשימוש ב – LoginView:

<asp:LoginView ID="LoginView1" runat="server">
  <AnonymousTemplate>
    <asp:Label Text="Hello anonymous user" 
      runat="server" ID="lblAnonymous" />
  </AnonymousTemplate>
  <LoggedInTemplate>
    <asp:Label ID="Label1" Text="Hello " runat="server" />
    <asp:LoginName runat="server" ID="ctrlLoginName" />
  </LoggedInTemplate
>
</
asp:LoginView
>

במידה והמשתמש איננו מחובר נראה את הכיתוב "Hello anonymous user". במידה והמשתמש מחובר (לצורך ההדגמה כמשתמש בשם "user1") נראה את הכיתוב "Hello user1".

פקד LoginName

פקד זה מראה לנו את שם המשתמש. ניתן לראות את השימוש בפקד בדוגמה של פקד ה – LoginView לעיל. בכל מקום בו שמים את הפקד הוא מציג את שם המשתמש.

פקד ChangePassword

פקד זה מאפשר לנו ליצור בקלות טופס לשינוי סיסמא. כל שעלינו לעשות הוא להוסיף דף לאתר שלנו ולקרוא לו ChangePassword.aspx

לדף הזה נוסיף את הפקד כך שיווצר לנו הכיתוב הבא:

<asp:ChangePassword ID="ChangePassword1" runat="server">
</
asp:ChangePassword
>

כאשר הדף יעלה – יוצג למשתמש המסך הבא:

ASPNET - שינוי סיסמת משתמש

נסקור חלק מן המאפיינים:

ChangePasswordButtonText – הכיתוב על גבי הכפתור "Change Password" (הכפתור שמבצע את פעולת שינוי הסיסמא).

ChangePasswordButtonType – ניתן לשים במקום הכפתור קישור או תמונה – לכן ניתן לשנות את המאפיין ChangePasswordButtonType ל – Image או ל – Link.

במקרה של Image יש לתת קישור לתמונה במאפיין ChangePasswordButtonImageUrl, במקרה זה הערך המופיע במאפיין ChangePasswordButtonText ישמש כ – alt text של התמונה.

ConfirmNewPasswordLabeltext – הכיתוב ליד השדה לאישור הסיסמא החדשה.

NewPasswordlabelText – הכיתוב ליד השדה לכתיבת הסיסמא החדשה.

PasswordLabelText – הכיתוב ליד שדה הסיסמא (הישנה).

ChangePasswordFailureText – הודעת השגיאה אשר תופיע במקרה של שגיאה בשינוי הסיסמא.

פקד CreateUserWizard

פקד זה מאפשר לנו להוסיף דף רישום למערכת. הכיתוב עבור הפקד הוא:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
  ContinueDestinationPageUrl="~/home.aspx">
  <WizardSteps>
    <asp:CreateUserWizardStep ID="CreateUserWizardStep1" 
      runat="server">
    </asp:CreateUserWizardStep>
    <asp:CompleteWizardStep ID="CompleteWizardStep1" 
      runat="server">
    </asp:CompleteWizardStep>
  </WizardSteps
>
</
asp:CreateUserWizard
>

שימו לב למאפיין ContinueDestinationPageUrl – זו הכתובת לדף אליו יופנה המשתמש לאחר השלמת תהליך הרישום.

לבד ממנו נראה כי האשף (Wizard) הזה מחולק לשני שלבים (Steps) כאשר האחד הוא הרישום והשני הוא שלב ההשלמה. נוכל לראות כי מתקבלים שני מסכים (אחד עבור כל שלב).

שלב ההרשמה:

ASPNET - רישום משתמש חדש

לאחר לחיצה על הכפתור Create User יתקבל המסך הבא:

ASPNET - אישור רישום משתמש חדש

לחיצה על Continue תפנה אותנו לכתובת אותה הגדרנו במאפיין ContinueDestinationPageUrl.

פקד PasswordRecovery

שימוש בפקד זה מאפשר לנו ליצור דף, בו המשתמש נדרש לענות על שאלה בה בחר בעת שנרשם למערכת, והסיסמא תאופס ותשלח אליו למייל.

הכיתוב עבור הפקד הזה:

<asp:PasswordRecovery ID="Passwordrecovery1" runat="server" />

כאשר משתמשים בפקד מתקבל המסך הבא:

ASPNET - שחזור סיסמא

חשוב להגדיר שני דברים במידה ומשתמשים בפקד זה:

1. שרת SMTP – אותו יש להגדיר ב – web.config:

<system.net>
  <
mailSettings
>
    <
smtp deliveryMethod="Network"
>
      <
network host="yourSmtpServer"
/>
    </
smtp
>
  </
mailSettings
>
</
system.net
>

2. כתובת השולח, אותה ניתן להגדיר בתוך הפקד במאפיין MailDefinition.From.

תגיות: , , , ,

IdoFlatow

יועץ ומרצה בקבוצת סלע לתחומי Web ו-Data. עוסק בתחומים Asp.Net, WCF, Silverlight, IIS ו-Entity Framework.כותב הקורס הרשמי של מיקרוסופט ל-WCF וכן שותף בכתיבת הספר ASP.NET Programmer's Reference (ISBN 978-0470505458)

תגובות בפייסבוק