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.