Spring Security זכור אותי

1. סקירה כללית

הדרכה זו תוצג כיצד להפעיל ולהגדיר פונקציונליות זכור אותי ביישום אינטרנט עם אביב ביטחון. הגדרת יישום MVC עם אבטחה וכניסה פשוטה לטופס כבר נדונה.

המנגנון יוכל לזהות את המשתמש במספר הפעלות - אז הדבר הראשון שיש להבין הוא ש'זכור אותי 'נכנס רק לאחר פסק הזמן של הפגישה. כברירת מחדל, זה קורה לאחר 30 דקות של חוסר פעילות, אך ניתן להגדיר פסק זמן ב web.xml.

הערה: הדרכה זו מתמקדת ב הגישה הסטנדרטית מבוססת העוגיות. לקבלת הגישה המתמדת, עיין במדריך האביב לאבטחה - קבוע לזכור אותי.

2. תצורת האבטחה

בואו נראה כיצד להגדיר את תצורת האבטחה באמצעות Java:

@Configuration @EnableWebSecurity המחלקה הציבורית SecSecurityConfig מרחיב את WebSecurityConfigurerAdapter {@Bean ("authenticationManager") @ Override public AuthenticationManager authenticationManagerBean () זורק חריג {להחזיר super.authenticationManagerBean (); } @ Autovired public void configureGlobal (AuthenticationManagerBuilder auth) זורק Exception {auth.inMemoryAuthentication () .withUser ("user1"). סיסמה ("{noop} user1Pass"). תפקידים ("USER"). ו- () .withUser (" admin1 "). סיסמה (" {noop} admin1Pass "). תפקידים (" ADMIN "); } תצורת הריק המוגנת על ידי @Override (HttpSecurity הסופי http) זורקת חריג {http.authorizeRequests () .antMatchers ("/ אנונימי *"). אנונימי () .antMatchers ("/ login *"). PermAll () .anyRequest (). מאומת () .and () .formLogin () .loginPage ("/ login.html") .loginProcessingUrl ("/ login") .failureUrl ("/ login.html? error = true"). and () .logout ( ) .deleteCookies ("JSESSIONID") .and () .rememberMe (). key ("uniqueAndSecret"); }}

כפי שאתה יכול לראות, התצורה הבסיסית באמצעות זכור אותי() שיטה הוא פשוט ביותר תוך שהוא נשאר גמיש מאוד באמצעות אפשרויות נוספות. ה מַפְתֵחַ חשוב כאן - זהו סוד ערך פרטי לכל היישום והוא ישמש בעת יצירת תוכן האסימון.

בנוסף, ה- הזמן שניתן להגדיר את האסימון תקף כברירת מחדל של שבועיים לשימוש - למשל - יום אחד tokenValiditySeconds ():

rememberMe (). key ("uniqueAndSecret"). tokenValiditySeconds (86400)

אנו יכולים גם להסתכל על תצורת ה- XML ​​המקבילה:

3. טופס הכניסה

טופס הכניסה דומה לזה שבו השתמשנו בכניסה לטופס:

מִשׁתַמֵשׁ:
סיסמה:
זכור אותי:

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

ניתן לשנות נתיב ברירת מחדל זה באופן הבא:

.rememberMe (). rememberMeParameter ("זוכר אותי חדש")

4. העוגיה

המנגנון ייצור עוגיה נוספת - עוגיית "זכור לי" - כאשר המשתמש יתחבר.

ה זכור לי עוגיה מכיל את הנתונים הבאים:

  • שם משתמש - כדי לזהות את המנהל המחובר
  • תאריך תפוגה - לפוג את העוגיה; ברירת המחדל היא שבועיים
  • חשיש MD5 - משני הערכים הקודמים - שם משתמש ו תאריך תפוגה, בתוספת ה- סיסמה והמוגדר מראש מַפְתֵחַ

הדבר הראשון שיש לשים לב כאן הוא ששניהם שם משתמש וה סיסמה הם חלק מהעוגיה - המשמעות היא שאם אחד מהם משתנה, העוגיה כבר לא תקפה. וגם ה שם משתמש ניתן לקרוא מהעוגיה.

בנוסף, חשוב להבין שמנגנון זה עלול להיות פגיע אם קובץ ה- cookie לזכור אותי נתפס. העוגיה תהיה תקפה ושימושית עד שתוקפו יפוג או שהאישורים ישתנו.

5. בפועל

כדי לראות בקלות את מנגנון ה- remember me עובד, אתה יכול:

  • התחבר עם זכור אותי פעיל
  • המתן עד שתוקף ההפעלה יפוג (או הסר את JSESSIONID קובץ cookie בדפדפן)
  • רענן את הדף

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

6. מסקנה

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

ניתן למצוא את היישום בדוגמה של פרויקט Github - זהו פרויקט מבוסס Eclipse, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.

כאשר הפרויקט פועל באופן מקומי, login.html ניתן לגשת אליו ב- localhost.


$config[zx-auto] not found$config[zx-overlay] not found