Tavaszi biztonsági alap hitelesítés

1. Áttekintés

Ez az oktatóanyag bemutatja, hogyan kell beállítani, konfigurálni és testre szabni Alapvető hitelesítés tavasszal. Az egyszerű Spring MVC példa tetejére építünk, és az Spring Security által biztosított Basic Auth mechanizmussal rögzítjük az MVC alkalmazás felhasználói felületét.

2. A tavaszi biztonsági konfiguráció

A Spring Security-t a Java config segítségével konfigurálhatjuk:

@Configuration @EnableWebSecurity nyilvános osztály A CustomWebSecurityConfigurerAdapter kiterjeszti a WebSecurityConfigurerAdapter {@Autowired private MyBasicAuthenticationEntryPoint authenticationEntryPoint; A @Autowired public void configureGlobal (AuthenticationManagerBuilder } A @Orride védett érvénytelen konfigurálása (HttpSecurity http) dobja a {http.authorizeRequests () .antMatchers ("/ securityNone") kivételt. AllowAll () .anyRequest (). Hitelesített () .és () .httpBasic () .authenticationEntryPoint (authenticationEntryPoint) ); http.addFilterAfter (új CustomFilter (), BasicAuthenticationFilter.class); } @Bean public PasswordEncoder passwordEncoder () {return new BCryptPasswordEncoder (); }}

Itt használjuk a httpBasic () elem az alapvető hitelesítés meghatározásához, a Beállítás() kiterjeszthető osztály módszere WebSecurityConfigurerAdapter.

Ugyanez érhető el az XML használatával is:

Ami itt releváns, az a elem a fő belsejében a konfiguráció eleme - ez elegendő ahhoz, hogy az egész hitelesítést lehetővé tegye az alap hitelesítéshez. Ez az oktatóanyag nem a Hitelesítéskezelőre összpontosít, ezért a memóriában lévő kezelőt használjuk, a felhasználó és a jelszó sima szövegben.

A web.xml A Spring Security alkalmazást lehetővé tevő webalkalmazásról már a Spring Logout oktatóanyagban volt szó.

3. A biztonságos alkalmazás fogyasztása

A becsavar A command a go-to eszközünk a biztonságos alkalmazás fogyasztásához.

Először próbáljuk meg kérni a /homepage.html biztonsági adatok megadása nélkül:

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

Visszaadjuk a vártat 401 Jogosulatlan és a hitelesítési kihívás:

HTTP / 1.1 401 jogosulatlan kiszolgáló: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = E5A8D3C16B65A0A007CFAACAEEE6916B; Útvonal = / spring-security-mvc-basic-auth /; HttpOnly WWW-hitelesítés: Basic realm = "Spring Security Application" Tartalom-típus: text / html; charset = utf-8 Tartalom-hossz: 1061 Dátum: 2013. május 29., szerda, 15:14:08 GMT

A böngésző értelmezni fogja ezt a kihívást, és egyszerű párbeszédablakkal kéri a hitelesítő adatok megadását, de mivel mi használjuk becsavar, ez nem így van.

Most kérjük ugyanazt az erőforrást - a kezdőlapot -, de adja meg a hitelesítő adatokat hogy elérje azt is:

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

Most a szerver válasza 200 OK együtt a Aprósütemény:

HTTP / 1.1 200 OK Szerver: Apache-Coyote / 1.1 Set-Cookie: JSESSIONID = 301225C7AE7C74B0892887389996785D; Útvonal = / spring-security-mvc-basic-auth /; HttpOnly Content-type: text / html; charset = ISO-8859-1 Content-Language: hu-US Content-Length: 90 Date: Wed, 2013. május 29., 15:19:38 GMT

A böngészőből az alkalmazás normálisan fogyasztható - az egyetlen különbség az, hogy a bejelentkezési oldal már nem jelent különösebb követelményt, mivel minden böngésző támogatja az alapvető hitelesítést, és egy párbeszédpanelen kéri a felhasználót a hitelesítő adatok megadására.

4. További konfiguráció - tő Belépési pont

Alapértelmezés szerint a BasicAuthenticationEntryPoint a Spring Security által biztosított teljes oldal a 401 Jogosulatlan válasz az ügyfélnek. A hiba ezen HTML reprezentációja jól működik a böngészőben, de más forgatókönyvek esetén nem megfelelő, például egy REST API-ra, ahol a json reprezentációt lehet előnyben részesíteni.

A névtér ehhez az új követelményhez is elég rugalmas - ennek megoldására - a belépési pont felülírható:

Az új belépési pontot standard babként definiálják:

A @Component public class MyBasicAuthenticationEntryPoint kiterjeszti a BasicAuthenticationEntryPoint {@Override public void kezdetét (HttpServletRequest kérés, HttpServletResponse válasz, AuthenticationException authEx) dobja az IOException, ServletExceader (AutletExheader) response.setStatus (HttpServletResponse.SC_UNAUTHORIZED); PrintWriter író = response.getWriter (); író.println ("401 HTTP állapot -" + authEx.getMessage ()); } @Orride public void afterPropertiesSet () dobja a {Kivétel {setRealmName ("Baeldung") kivételt; super.afterPropertiesSet (); }}

Ha közvetlenül a HTTP-válaszba írunk, akkor teljes mértékben ellenőrizhetjük a válasz törzsének formátumát.

5. A Maven-függőségek

A tavaszi biztonság Maven-függőségeiről korábban már volt szó a Spring Security with Maven cikkében - mindkettőre szükségünk lesz tavasz-biztonsági web és spring-security-config futás közben elérhető.

6. Következtetés

Ebben a példában egy MVC alkalmazást biztosítottunk Spring Security és Basic Authentication segítségével. Megbeszéltük az XML konfigurációt, és egyszerű curl parancsokkal használtuk fel az alkalmazást. Végül átvette az irányítást a pontos hibaüzenet-formátum felett - a szabványos HTML-hibaoldalról egy egyéni szöveges vagy JSON-formátumra váltott.

Ennek az oktatóanyagnak a teljes megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.

Amikor a projekt helyi szinten fut, a HTML minta a következő címen érhető el:

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