Bevezetés a Java Config for Spring Security programba

1. Áttekintés

Ez a cikk az bevezetés a Java Security Java konfigurációjához amely lehetővé teszi a felhasználók számára a Spring Security egyszerű konfigurálását XML használata nélkül.

A Java konfiguráció a Spring tavaszi keretrendszerhez került hozzáadásra a 3.1 tavasszal, és a Spring Security a 3.2 tavasszal kiterjesztésre került @ Konfiguráció.

2. Maven Setup

Ahhoz, hogy a Spring Security programot felhasználhassuk egy Maven projektben, először rendelkeznünk kell a rugó-biztonsági mag függőség a projektben pom.xml:

 org.springframework.security spring-security-core 5.3.3.FELHASZNÁLÁS 

A legfrissebb verzió mindig itt található.

3. Webbiztonság Java konfigurációval

Kezdjük a Spring Security Java konfigurációjának alapvető példájával:

A @EnableWebSecurity nyilvános osztály, a SecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {@Autowired public void configureGlobal (AuthenticationManagerBuilder auth) kivételt a {auth.inMemoryAuthentication (). WithUser ("user"). Jelszó (passwordEncoder (). FELHASZNÁLÓ "); }}

Mint észrevette, a konfiguráció létrehoz egy alapszintű memóriában történő hitelesítési konfigurációt. Emellett az 5. tavasztól szükségünk van a PasswordEncoder bab:

@Bean public PasswordEncoder passwordEncoder () {return new BCryptPasswordEncoder (); }

4. HTTP biztonság

A HTTP biztonság tavasszal történő engedélyezéséhez ki kell terjesztenünk a WebSecurityConfigurerAdapter alapértelmezett konfiguráció megadásához a konfigurálás (HttpSecurity http) módszer:

védett void configure (HttpSecurity http) a {http.authorizeRequests () .anyRequest (). hitelesített () .and (). httpBasic () kivételt dobja. } 

A fenti alapértelmezett konfiguráció biztosítja, hogy az alkalmazás minden kérését űrlap alapú bejelentkezéssel vagy HTTP alapú hitelesítéssel hitelesítsék.

Ez pontosan hasonlít a következő XML-konfigurációhoz:

5. Bejelentkezés űrlap

Érdekes, hogy a Spring Security automatikusan létrehoz egy bejelentkezési oldalt az engedélyezett funkciók alapján, és a beküldött bejelentkezést feldolgozó URL szabványos értékeivel:

védett void configure (HttpSecurity http) a {http.authorizeRequests () .anyRequest (). hitelesített () .and (). formLogin () .loginPage ("/ login"). allowAll (); }

Itt az automatikusan létrehozott bejelentkezési oldal kényelmes a gyors üzembe helyezéshez.

6. Felhatalmazás szerepekkel

Konfiguráljunk most néhány egyszerű jogosultságot az egyes URL-ekre szerepek használatával:

védett void configure (HttpSecurity http) dobja a {http.authorizeRequests () .antMatchers ("/", "/home").access("hasRole('USER ')") kivételt .antMatchers ("/ admin / **") .hasRole ("ADMIN") .és () // még néhány metódushívás .formLogin (); }

Figyelje meg, hogyan használjuk a típusbiztonságos API-t - hasRole - hanem a kifejezés alapú API, via hozzáférés.

7. Kijelentkezés

A tavaszi biztonság számos más aspektusához hasonlóan a kijelentkezésnek is vannak nagy alapértelmezései, amelyeket a keretrendszer biztosít.

Alapértelmezés szerint a kijelentkezési kérelem érvényteleníti a munkamenetet, töröl minden hitelesítési gyorsítótárat, törli a SecurityContextHolder és átirányít a bejelentkezési oldalra.

Itt van egy egyszerű kijelentkezési konfiguráció:

védett void configure (HttpSecurity http) dobja a Kivételt {http.logout (); }

Ha azonban jobban szeretné irányítani a rendelkezésre álló kezelőket, a következőképpen néz ki egy teljesebb megvalósítás:

védett void configure (HttpSecurity http) a {http.logout (). logoutUrl ("/ my / logout") .logoutSuccessUrl ("/ my / index") .logoutSuccessHandler (logoutSuccessHandler) .invalidateHttpSession (true) .addLogoutHandler .deleteCookies (cookieNamesToClear) .and () // más metódushívások}

8. Hitelesítés

Vizsgáljuk meg a hitelesítésnek a Spring Security egy másik módját.

8.1. Memórián belüli hitelesítés

Kezdjük egy egyszerű, a memóriában lévő konfigurációval:

Az @Autowired public void configureGlobal (AuthenticationManagerBuilder withUser ("admin"). jelszó (passwordEncoder (). encode ("jelszó")). szerepek ("USER", "ADMIN"); } 

8.2. JDBC hitelesítés

Ennek áthelyezéséhez a JDBC-be csak annyit kell tennie, hogy meghatároz egy adatforrást az alkalmazáson belül - és ezt közvetlenül használja:

@Autowired private DataSource dataSource; A @Autowired public void configureGlobal (AuthenticationManagerBuilder "USER") .és () .withUser ("admin"). Jelszó (passwordEncoder (). Encode ("jelszó")). Szerepek ("USER", "ADMIN"); } 

Természetesen mindkét fenti példa mellett meg kell határoznunk a PasswordEncoder bab a 3. szakaszban ismertetett módon.

9. Következtetés

Ebben a gyors bemutatóban áttekintettük a Java Configuration for Spring Security alapjait, és a kódmintákra összpontosítottunk, amelyek a legegyszerűbb konfigurációs forgatókönyveket szemléltetik.