אימות בסיסי של אבטחת אביב

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

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

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

אנו יכולים להגדיר את Spring Security באמצעות תצורת Java:

@Configuration @EnableWebSecurity מחלקה ציבורית CustomWebSecurityConfigurerAdapter מרחיב את WebSecurityConfigurerAdapter {@Autowired פרטי MyBasicAuthenticationEntryPoint authenticationEntryPoint; @Autowired חלל ציבורי configureGlobal (AuthenticationManagerBuilder auth) זורק Exception {auth.inMemoryAuthentication () .withUser ("user1"). Password (passwordEncoder (). Encode ("user1Pass")) .authorities ("ROLE_USER"); } התצורה הריקה המוגנת על ידי @Override (HttpSecurity http) זורקת חריגה {http.authorizeRequests () .antMatchers ("/ securityNone"). PermitAll () .anyRequest (). מאומת () .and () .httpBasic () .authenticationEntryPoint (authenticationEntryPoint) ); http.addFilterAfter (CustomFilter חדש (), BasicAuthenticationFilter.class); } @Bean סיסמא ציבורית Encoder סיסמא Encoder () {להחזיר BCryptPasswordEncoder חדש (); }}

כאן אנו משתמשים ב- httpBasic () אלמנט להגדרת אימות בסיסי, בתוך הגדר () שיטה של ​​מעמד שמתארך מתאם WebSecurityConfigurer.

ניתן להשיג את אותו הדבר באמצעות XML:

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

ה web.xml של יישום האינטרנט המאפשר אבטחת אביב כבר נדון במדריך התנתקות באביב.

3. צריכת היישום המאובטח

ה סִלְסוּל הפקודה היא הכלי שלנו לשימוש בצריכת היישום המאובטח.

ראשית, בוא ננסה לבקש את / דף הבית.html מבלי לספק אישורי אבטחה:

תלתל -א // localhost: 8080 / קפיץ-אבטחה-מנוחה-בסיסי-auth / api / foos / 1

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

HTTP / 1.1 401 שרת לא מורשה: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = E5A8D3C16B65A0A007CFAACAEEE6916B; נתיב = / קפיץ-אבטחה-mvc-basic-auth /; HttpOnly WWW-Authenticate: Basic realm = "Spring Security Application" סוג תוכן: text / html; charset = utf-8 אורך תוכן: 1061 תאריך: רביעי, 29 במאי 2013 15:14:08 GMT

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

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

curl -i - user user1: user1Pass // localhost: 8080 / spring-security-rest-basic-auth / api / foos / 1

כעת, התגובה מהשרת היא 200 בסדר יחד עם א עוגייה:

HTTP / 1.1 200 שרת אישור: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = 301225C7AE7C74B0892887389996785D; נתיב = / קפיץ-אבטחה-mvc-basic-auth /; HttpOnly סוג תוכן: text / html; charset = ISO-8859-1 שפת תוכן: en-US אורך תוכן: 90 תאריך: רביעי, 29 במאי 2013 15:19:38 GMT

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

4. תצורה נוספת - tנקודת הכניסה

כברירת מחדל, ה- בסיסי אימות כניסה שמספק Spring Security מחזיר דף מלא עבור a 401 בלתי מורשים תגובה חזרה ללקוח. ייצוג HTML זה של השגיאה הופך היטב בדפדפן, אך הוא אינו מתאים לתרחישים אחרים, כגון REST API בו ניתן להעדיף ייצוג json.

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

נקודת הכניסה החדשה מוגדרת כשעועית רגילה:

המחלקה הציבורית @Component MyBasicAuthenticationEntryPoint מרחיבה את BasicAuthenticationEntryPoint {@Override public void commence (HttpServletRequest request, HttpServletResponse response, AuthenticationException authEx) זורק IOException, ServletException {response.addHeader ("WWW") "" response.setStatus (HttpServletResponse.SC_UNAUTHORIZED); כותב PrintWriter = response.getWriter (); writer.println ("מצב HTTP 401 -" + authEx.getMessage ()); } @Override ציבור בטל לאחרPropertiesSet () זורק Exception {setRealmName ("Baeldung"); super.afterPropertiesSet (); }}

על ידי כתיבה ישירה לתגובת HTTP כעת יש לנו שליטה מלאה על הפורמט של גוף התגובה.

5. התלות של Maven

התלות של Maven לביטחון אביב נדונה בעבר במאמר Spring Security with Maven - נצטרך את שניהם אביב-ביטחון-רשת ו אביב-ביטחון-תצורה זמין בזמן ריצה.

6. מסקנה

בדוגמה זו, אבטחנו יישום MVC באמצעות אבטחת אביב ואימות בסיסי. דנו בתצורת ה- XML ​​וצרכנו את היישום בפקודות סלסול פשוטות. לבסוף השתלט על הפורמט המדויק של הודעת השגיאה - מעבר מדף השגיאה הסטנדרטי ב- HTML לטקסט מותאם אישית או לפורמט JSON.

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

כאשר הפרויקט פועל באופן מקומי, ניתן לגשת אל ה- HTML לדוגמא בכתובת:

// localhost: 8080 / spring-security-rest-basic-auth / api / foos / 1.


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