כיצד לאמת ידנית משתמש באמצעות אבטחת אביב

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

במאמר מהיר זה, נתמקד כיצד להגדיר תוכנתית משתמש מאומת ב- Spring Security וב- Spring MVC.

2. אבטחת אביב

במילים פשוטות, Spring Security מחזיקה את המידע העיקרי של כל משתמש מאומת ב- ThreadLocal - מיוצג כ- אימות לְהִתְנַגֵד.

על מנת לבנות ולהגדיר זאת אימות אובייקט - עלינו להשתמש באותה גישה של Spring Security בדרך כלל כדי לבנות את האובייקט על אימות סטנדרטי.

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

UsernamePasswordAuthenticationToken authReq = UsernamePasswordAuthenticationToken חדש (משתמש, מעבר); אימות אימות = authManager.authenticate (authReq); SecurityContext sc = SecurityContextHolder.getContext (); sc.setAuthentication (auth);

לאחר הגדרת ה- אימות בהקשר, כעת נוכל לבדוק אם המשתמש הנוכחי מאומת באמצעות securityContext.getAuthentication (). isAuthenticated ().

3. אביב MVC

כברירת מחדל, Spring Security מוסיף מסנן נוסף בשרשרת המסננים של Spring Security - המסוגל להתמיד בהקשר האבטחה (SecurityContextPersistenceFilter מעמד).

בתורו, הוא מאציל את ההתמדה של הקשר האבטחה למופע של SecurityContextRepository, כברירת מחדל ל HttpSessionSecurityContextRepository מעמד.

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

כניסה בטלנית ציבורית (HttpServletRequest req, User String, String pass) {UsernamePasswordAuthenticationToken authReq = new UsernamePasswordAuthenticationToken (user, pass); אימות אימות = authManager.authenticate (authReq); SecurityContext sc = SecurityContextHolder.getContext (); sc.setAuthentication (auth); הפעלת HttpSession = req.getSession (נכון); session.setAttribute (SPRING_SECURITY_CONTEXT_KEY, sc); }

SPRING_SECURITY_CONTEXT_KEY הוא ייבוא ​​סטטי HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY.

יש לציין כי איננו יכולים להשתמש ישירות ב- HttpSessionSecurityContextRepository כי זה עובד בשיתוף עם SecurityContextPersistenceFilter.

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

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

4. מסקנה

במדריך מהיר זה, עברנו כיצד להגדיר את המשתמש באופן ידני אימות בהקשר של Spring Security וכיצד ניתן להנגיש אותו למטרות Spring MVC, תוך התמקדות בדוגמאות הקוד הממחישות את הדרך הפשוטה ביותר להשיג זאת.

כמו תמיד, ניתן למצוא דוגמאות קוד ב- GitHub.


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