Úvod do programu Java Config pre jarnú bezpečnosť

1. Prehľad

Tento článok je úvod do konfigurácie Java pre Spring Security ktorý umožňuje používateľom ľahko konfigurovať Spring Security bez použitia XML.

Konfigurácia Java bola pridaná do jarného rámca na jar 3.1 a rozšírená na Spring Security na jar 3.2 a je definovaná v anotovanej triede @ Konfigurácia.

2. Nastavenie Maven

Ak chcete použiť Spring Security v projektoch Maven, najskôr musíme mať pružinové bezpečnostné jadro závislosť v projekte pom.xml:

 org.springframework.security spring-security-core 5.3.3.RELEASE 

Najnovšiu verziu nájdete vždy tu.

3. Zabezpečenie webu s konfiguráciou Java

Začnime základným príkladom konfigurácie Java Spring Security:

Verejná trieda @EnableWebSecurity SecurityConfig rozširuje WebSecurityConfigurerAdapter {@Autowired public void configureGlobal (AuthenticationManagerBuilder auth) hodí výnimku {auth.inMemoryAuthentication (). WithUser ("user") .password (passwordEncoder (). Encode ("heslo") USER “); }}

Ako ste si mohli všimnúť, konfigurácia nastavuje základnú konfiguráciu overovania v pamäti. Od jari 5 navyše potrebujeme a PasswordEncoder fazuľa:

@Bean public PasswordEncoder passwordEncoder () {vrátiť nový BCryptPasswordEncoder (); }

4. Zabezpečenie HTTP

Ak chcete na jar povoliť zabezpečenie HTTP, musíme rozšíriť WebSecurityConfigurerAdapter poskytnúť predvolenú konfiguráciu v systéme Windows nakonfigurovať (HttpSecurity http) metóda:

Protected Void configure (HttpSecurity http) vyvolá výnimku {http.authorizeRequests () .anyRequest (). authenticated (). a (). httpBasic (); } 

Vyššie uvedená predvolená konfigurácia zaisťuje, že akákoľvek požiadavka na aplikáciu je autentifikovaná pomocou prihlásenia na základe formulára alebo základného overenia HTTP.

Je tiež úplne podobný nasledujúcej konfigurácii XML:

5. Prihlásenie do formulára

Je zaujímavé, že Spring Security generuje prihlasovaciu stránku automaticky na základe povolených funkcií a štandardných hodnôt pre adresu URL, ktorá spracováva zadané prihlásenie:

protected void configure (HttpSecurity http) vyvolá výnimku {http.authorizeRequests () .anyRequest (). authenticated (). a (). formLogin () .loginPage ("/ login"). permitAll (); }

Tu je automatické generovanie prihlasovacej stránky pohodlné pre rýchle uvedenie do prevádzky.

6. Autorizácia pomocou rolí

Poďme si teraz nakonfigurovať niektoré jednoduché autorizácie na každej adrese URL pomocou rolí:

Protected Void configure (HttpSecurity http) vyvolá výnimku {http.authorizeRequests () .antMatchers ("/", "/home" ).access("hasRole('USER ')") .antMatchers ("/ admin / **") .hasRole ("ADMIN") .and () // niektoré ďalšie volania metód .formLogin (); }

Všimnite si, ako používame typovo bezpečné API - hasRole - ale aj API založené na výrazoch prostredníctvom prístup.

7. Odhlásiť sa

Rovnako ako mnoho ďalších aspektov jarnej bezpečnosti, aj odhlásenie má niektoré veľké predvolené hodnoty, ktoré poskytuje rámec.

V predvolenom nastavení požiadavka na odhlásenie zneplatňuje reláciu, vymaže všetky medzipamäte autentifikácie, vymaže SecurityContextHolder a presmeruje na prihlasovaciu stránku.

Tu je jednoduchá konfigurácia odhlásenia:

Konfigurácia chráneného prázdna (HttpSecurity http) vyvolá výnimku {http.logout (); }

Ak však chcete získať väčšiu kontrolu nad dostupnými obslužnými programami, kompletná implementácia bude vyzerať takto:

Protected Void configure (HttpSecurity http) vyvolá výnimku {http.logout (). logoutUrl ("/ my / logout") .logoutSuccessUrl ("/ my / index") .logoutSuccessHandler (logoutSuccessHandler) .invalidateHttpSession (true) .addLogoutHandler (logo) .deleteCookies (cookieNamesToClear) .and () // niektoré ďalšie volania metód}

8. Autentifikácia

Pozrime sa na ďalší spôsob, ako povoliť autentifikáciu pomocou Spring Security.

8.1. Autentifikácia v pamäti

Začneme jednoduchou konfiguráciou v pamäti:

@Autowired public void configureGlobal (AuthenticationManagerBuilder auth) hodí výnimku {auth.inMemoryAuthentication () .withUser ("užívateľ"). Heslo (passwordEncoder (). Encode ("heslo")). Role ("USER"). A (). withUser ("admin"). heslo (passwordEncoder (). encode ("heslo")). role ("USER", "ADMIN"); } 

8.2. Autentifikácia JDBC

Ak to chcete presunúť do JDBC, musíte definovať zdroj údajov v aplikácii - a priamo ich použiť:

@Autowired private DataSource dataSource; @Autowired public void configureGlobal (AuthenticationManagerBuilder auth) hodí výnimku {auth.jdbcAuthentication (). DataSource (dataSource) .withDefaultSchema () .withUser ("užívateľ"). Heslo (passwordEncoder (). Encode ("heslo")). Role ( "USER") .and () .withUser ("admin"). Heslo (passwordEncoder (). Encode ("heslo")). Role ("USER", "ADMIN"); } 

Samozrejme, s oboma vyššie uvedenými príkladmi musíme tiež definovať PasswordEncoder fazuľa uvedená v časti 3.

9. Záver

V tomto rýchlom výučbe sme si prešli základy Java Configuration pre Spring Security a zamerali sme sa na ukážky kódu, ktoré ilustrujú najjednoduchšie konfiguračné scenáre.


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