ספק אימות אבטחה באביב

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

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

2. ספק האימות

Spring Security מספק מגוון אפשרויות לביצוע אימות. אלה עוקבים אחר חוזה פשוט - an אימות הבקשה מעובדת על ידי אימות ספק ואובייקט מאומת לחלוטין עם אישורים מלאים מוחזר.

היישום הסטנדרטי והנפוץ ביותר הוא DaoAuthenticationProvider - המאחזר את פרטי המשתמש ממשתמש פשוט וקריאה בלבד DAO - UserDetailsService. שירות פרטי משתמש זה יש רק גישה לשם המשתמש על מנת לאחזר את ישות המשתמש המלאה. זה מספיק לרוב התרחישים.

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

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

מחלקה ציבורית @Component CustomAuthenticationProvider מיישם AuthenticationProvider {@Override Authentication Authentication (Authentication Authentication) זורק AuthenticationException {String name = authentication.getName (); סיסמת מחרוזת = authentication.getCredentials (). ToString (); אם (shouldAuthenticateAgainstThirdPartySystem ()) {// להשתמש בתעודות // ולאמת כנגד מערכת צד ג 'להחזיר UsernamePasswordAuthenticationToken חדש (שם, סיסמה, ArrayList חדש ()); } אחר {להחזיר null; }} @Override תומך בוליאני ציבורי (אימות מחלקה) {להחזיר authentication.equals (UsernamePasswordAuthenticationToken.class); }}

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

3. רשום את ספק האימות

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

4. תצורת Java

לאחר מכן, בואו נסתכל על תצורת Java המתאימה:

@Configuration @EnableWebSecurity @ComponentScan ("com.baeldung.security") בכיתה ציבורית SecurityConfig מרחיב את WebSecurityConfigurerAdapter {@Autowired פרטי CustomAuthenticationProvider authProvider; התצורה הריקה המוגנת של @Override (AuthenticationManagerBuilder auth) זורקת Exception {auth.authenticationProvider (authProvider); } תצורת חלל מוגנת @Override (HttpSecurity http) זורקת חריג {http.authorizeRequests (). AnyRequest (). מאומת () .and (). HttpBasic (); }}

5. ביצוע אימות

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

בואו נשתמש בפשטות סִלְסוּל פקודה לשלוח בקשה מאומתת:

curl --header "Accept: application / json" -i - user user1: user1Pass // localhost: 8080 / spring-security-custom / api / foo / 1

למטרות דוגמה זו, אבטחנו את ה- REST API באמצעות אימות בסיסי.

ואנחנו מחזירים את ה -200 OK שצפוי מהשרת:

HTTP / 1.1 200 שרת אישור: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = B8F0EFA81B78DE968088EBB9AFD85A60; נתיב = / קפיץ-אבטחה-מותאם אישית /; HttpOnly סוג תוכן: application / json; charset = UTF-8 קידוד העברה: chunked תאריך: Sun, 02 יוני 2013 17:50:40 GMT

6. מסקנה

במאמר זה דנו בדוגמה לספק אימות מותאם אישית עבור Spring Security.

ניתן למצוא את היישום המלא של מדריך זה בפרויקט GitHub.


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