Tavaszi biztonság Emlékezz rám

1. Áttekintés

Ez az oktatóanyag megmutatja hogyan lehet engedélyezni és konfigurálni a Remember Me funkciót egy webalkalmazásban a Spring Security-vel. Az MVC alkalmazás biztonsággal és egyszerű űrlap bejelentkezéssel történő beállításáról már volt szó.

A mechanizmus képes lesz rá azonosítsa a felhasználót több munkamenet során - tehát az első dolog, amit meg kell érteni, hogy az Emlékezz rám csak a munkamenet időkorlátja után indul. Alapértelmezés szerint ez 30 perc inaktivitás után történik, de az időtúllépés a web.xml.

Megjegyzés: ez az oktatóanyag a középpontba áll a szokásos süti alapú megközelítés. A kitartó megközelítés érdekében tekintse meg a Tavaszi biztonság - kitartó emlékezzen rám című útmutatót.

2. A biztonsági konfiguráció

Nézzük meg, hogyan állíthatjuk be a biztonsági konfigurációt a Java használatával:

@Configuration @EnableWebSecurity nyilvános osztály A SecSecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {@Bean ("authenticationManager") @Orride public AuthenticationManager authenticationManagerBean () kivételt dob ​​{return super.authenticationManagerBean (); } @Autowired public void configureGlobal (AuthenticationManagerBuilder admin1 "). jelszó (" {noop} admin1Pass "). szerepkörök (" ADMIN "); } A @Orride védett void configure (utolsó HttpSecurity http) dobja a {http.authorizeRequests () .antMatchers ("/ anonymous *"). Anonymous () .antMatchers ("/ login *"). AllowAll () .anyRequest () kivételt hitelesített () .és () .formLogin () .loginPage ("/ login.html") .loginProcessingUrl ("/ login") .failureUrl ("/ login.html? hiba = igaz") .and () .logout ( ) .deleteCookies ("JSESSIONID") .és () .rememberMe (). kulcs ("egyediAndSecret"); }}

Amint látod, az alapkonfiguráció a Emlékezz rám() módszer rendkívül egyszerű, miközben további opciók révén nagyon rugalmas marad. A kulcs fontos itt - ez egy privát érték titok az egész alkalmazás számára, és a token tartalmának létrehozásakor fogják használni.

Ezenkívül a amikor a token érvényes, akkor konfigurálható az alapértelmezett 2 héttől például egy napig tokenValiditySeconds ():

rememberMe (). kulcs ("egyediAndSecret"). tokenValiditySeconds (86400)

Megtekinthetjük az egyenértékű XML konfigurációt is:

3. A bejelentkezési űrlap

A bejelentkezési űrlap hasonló az űrlap bejelentkezéshez használt formához:

Felhasználó:
Jelszó:
Emlékezz rám:

Figyelje meg az újonnan hozzáadottakat jelölőnégyzetet bemenet - hozzárendelés Emlékezz rám. Ez a hozzáadott bemenet elegendő ahhoz, hogy bejelentkezhess, ha aktívan emlékszel rám.

Ez az alapértelmezett elérési út a következőképpen is megváltoztatható:

.rememberMe (). rememberMeParameter ("emlékszem-új-új")

4. A süti

A mechanizmus létrehoz egy további sütit - az „emlékszem rám” sütit, amikor a felhasználó bejelentkezik.

A Emlékezz rám süti a következő adatokat tartalmazza:

  • felhasználónév - a bejelentkezett megbízó azonosítása
  • expirationTime - a süti lejáratához; az alapértelmezés 2 hét
  • MD5 hash - az előző 2 érték közül - felhasználónév és expirationTime, plusz a Jelszó és az előre definiált kulcs

Az első dolog, amit itt észre kell venni, hogy mind a felhasználónév és a Jelszó részei a cookie-nak - ez azt jelenti, hogy ha bármelyiket megváltoztatják, a süti már nem érvényes. Továbbá a felhasználónév olvasható a sütiből.

Ezenkívül fontos megérteni, hogy ez a mechanizmus potenciálisan sérülékeny, ha az emlékszem rám cookie-t rögzítik. A süti érvényes és használható lesz amíg le nem jár vagy a hitelesítő adatok megváltoznak.

5. A gyakorlatban

Az Emlékezzen rám mechanizmus működésének könnyebb megismerésére a következőket teheti:

  • jelentkezzen be, emlékezzen rám, hogy aktív
  • várja meg a munkamenet lejártát (vagy távolítsa el a JSESSIONID cookie a böngészőben)
  • frissítsd az oldalt

Anélkül, hogy emlékeznék rám, hogy aktív vagyok, a cookie lejárta után a felhasználónak lennie kell visszairányította a bejelentkezési oldalra. Emlékezz rám, a felhasználóra bejelentkezve marad az új token / cookie segítségével.

6. Következtetés

Ez az oktatóanyag bemutatta, hogyan állíthatja be és konfigurálja az Emlékezzen rám funkciót a biztonsági konfigurációban, és röviden leírta, hogy milyen adatok kerülnek a cookie-ba.

A megvalósítás megtalálható a példa Github projektben - ez egy Eclipse-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.

Amikor a projekt helyi szinten fut, a login.html a localhoston érhető el.