Jarná bezpečnosť Pamätaj si ma

1. Prehľad

Tento tutoriál sa ukáže ako povoliť a nakonfigurovať funkčnosť aplikácie Remember Me vo webovej aplikácii s jarnou bezpečnosťou. O nastavení aplikácie MVC so zabezpečením a jednoduchým prihlásením do formulára už bolo hovorené.

Tento mechanizmus bude schopný identifikovať používateľa vo viacerých reláciách - takže prvá vec, ktorú musíte pochopiť, je, že pamätať si ma kope až po uplynutí časového limitu relácie. Štandardne sa to deje po 30 minútach nečinnosti, ale časový limit je možné nakonfigurovať v web.xml.

Poznámka: tento výukový program sa zameriava na štandardný prístup založený na súboroch cookie. Trvalý prístup nájdete v príručke Jarné zabezpečenie - Trvalé zapamätanie si ma.

2. Konfigurácia zabezpečenia

Pozrime sa, ako nastaviť konfiguráciu zabezpečenia pomocou Javy:

@Configuration @EnableWebSecurity verejná trieda SecSecurityConfig rozširuje WebSecurityConfigurerAdapter {@Bean ("authenticationManager") @Override public AuthenticationManager authenticationManagerBean () vyvolá výnimku {return super.authenticationManagerBean (); } @Autowired public void configureGlobal (AuthenticationManagerBuilder auth) hodí výnimku {auth.inMemoryAuthentication () .withUser ("user1"). Heslo ("{noop} user1Pass"). Role ("USER"). A () .withUser (" admin1 "). heslo (" {noop} admin1Pass "). role (" ADMIN "); } @Override protected void configure (final HttpSecurity http) vyvolá výnimku {http.authorizeRequests () .antMatchers ("/ anonymous *"). Anonymous () .antMatchers ("/ login *"). PermitAll () .anyRequest (). authenticated () .and () .formLogin () .loginPage ("/ login.html") .loginProcessingUrl ("/ login") .failureUrl ("/ login.html? chyba = pravda") .and () .logout ( ) .deleteCookies ("JSESSIONID"). a () .rememberMe (). kľúč ("uniqueAndSecret"); }}

Ako môžeš vidieť, základná konfigurácia pomocou Pamätáš si ma() metóda je mimoriadne jednoduchý a zároveň veľmi flexibilný prostredníctvom ďalších možností. The kľúč je to tu dôležité - je to súkromné ​​tajomstvo hodnoty pre celú aplikáciu a použije sa pri generovaní obsahu tokenu.

Okrem toho čas, kedy je token platný, je možné nakonfigurovať z predvolených 2 týždňov na - napríklad - jeden deň používania tokenValiditySeconds ():

rememberMe (). key ("uniqueAndSecret"). tokenValiditySeconds (86400)

Môžeme sa tiež pozrieť na ekvivalentnú konfiguráciu XML:

3. Prihlasovací formulár

Prihlasovací formulár je podobný formuláru, ktorý sme použili pri prihlasovaní do formulára:

Užívateľ:
Heslo:
Pamätáš si ma:

Všimnite si novo pridané začiarkavacie políčko vstup - mapovanie na Pamätáš si ma. Tento pridaný vstup stačí na prihlásenie s aktívnym zapamätaním si.

Túto predvolenú cestu je možné zmeniť aj takto:

.rememberMe (). rememberMeParameter ("remember-me-new")

4. Cookie

Tento mechanizmus vytvorí ďalší súbor cookie - súbor cookie „pamätaj si ma“ - keď sa používateľ prihlási.

The Pamätaj si ma cookie obsahuje nasledovné údaje:

  • používateľské meno - na identifikáciu prihláseného príkazcu
  • expiračný čas - expirovať cookie; predvolená hodnota je 2 týždne
  • Hash MD5 - z predchádzajúcich 2 hodnôt - používateľské meno a expiračný čas, plus heslo a preddefinované kľúč

Prvá vec, ktorú si tu treba všimnúť, je, že obe používateľské meno a heslo sú súčasťou súboru cookie - to znamená, že ak dôjde k zmene niektorého z nich, súbor cookie už nie je platný. Tiež používateľské meno je možné prečítať z cookies.

Ďalej je dôležité si uvedomiť, že tento mechanizmus je potenciálne zraniteľný, ak je zachytený súbor cookie Remember Me. Cookie bude platný a použiteľný kým nevyprší jeho platnosť alebo kým sa nezmenia poverenia.

5. V praxi

Aby ste ľahko videli fungujúci mechanizmus zapamätania si, môžete:

  • prihlásiť sa zapamätať si ma aktívne
  • počkajte, kým platnosť relácie vyprší (alebo odstráňte súbor) JSESSIONID cookie v prehliadači)
  • obnovte stránku

Bez zapamätania si aktívneho by mal byť používateľ po uplynutí platnosti súboru cookie presmerovaný späť na prihlasovaciu stránku. Teraz si pamätajte, používateľ zostáva prihlásený pomocou nového tokenu / cookie.

6. Záver

Tento výukový program ukázal, ako nastaviť a nakonfigurovať funkčnosť Remember Me v konfigurácii zabezpečenia, a stručne popísal, aký druh údajov ide do súboru cookie.

Implementáciu nájdete v príklade projektu Github - jedná sa o projekt založený na Eclipse, takže by malo byť ľahké ho importovať a spustiť tak, ako je.

Keď projekt prebieha lokálne, login.html je prístupný na localhost.


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