Spring Security Husk meg

1. Oversikt

Denne opplæringen vil vises hvordan du aktiverer og konfigurerer Remember Me-funksjonalitet i et webapplikasjon med Spring Security. Å sette opp MVC-applikasjonen med sikkerhet og en enkel skjemainnlogging har allerede blitt diskutert.

Mekanismen vil kunne identifisere brukeren på tvers av flere økter - så det første du må forstå er at Husk meg bare sparker inn etter øktens tidsavbrudd. Som standard skjer dette etter 30 minutters inaktivitet, men tidsavbrudd kan konfigureres i web.xml.

Merk: denne opplæringen fokuserer på den standard informasjonskapselbaserte tilnærmingen. For den vedvarende tilnærmingen, ta en titt på Spring Security - Persistent Remember Me-guiden.

2. Sikkerhetskonfigurasjonen

La oss se hvordan du konfigurerer sikkerhetskonfigurasjonen ved hjelp av Java:

@Configuration @EnableWebSecurity offentlig klasse SecSecurityConfig utvider WebSecurityConfigurerAdapter {@Bean ("authenticationManager") @ Override public AuthenticationManager authenticationManagerBean () kaster Unntak {return super.authenticationManagerBean (); } @Autowired public void configureGlobal (AuthenticationManagerBuilder auth) kaster Unntak {auth.inMemoryAuthentication () .withUser ("user1"). Passord ("{noop} user1Pass"). Roller ("USER"). Og () .withUser (" admin1 "). passord (" {noop} admin1Pass "). roller (" ADMIN "); } @ Override beskyttet ugyldig konfigurasjon (endelig HttpSecurity http) kaster Unntak {http.authorizeRequests () .antMatchers ("/ anonym *"). Anonym () .antMatchers ("/ login *"). PermitAll () .anyRequest (). autentisert () .og () .formLogin () .loginPage ("/ login.html") .loginProcessingUrl ("/ login"). failureUrl ("/ login.html? error = true"). og () .logout ( ) .deleteCookies ("JSESSIONID"). og () .rememberMe (). nøkkel ("unikAndSecret"); }}

Som du kan se, den grunnleggende konfigurasjonen ved hjelp av Husk meg() metode er ekstremt enkel, men forblir veldig fleksibel gjennom flere alternativer. De nøkkel er viktig her - det er en privat verdihemmelighet for hele applikasjonen, og den vil bli brukt når du genererer innholdet i tokenet.

I tillegg har tid token er gyldig kan konfigureres fra standard på 2 uker til - for eksempel - en dag med tokenValiditySeconds ():

rememberMe (). nøkkel ("unikAndSecret"). tokenValiditySeconds (86400)

Vi kan også se på den tilsvarende XML-konfigurasjonen:

3. Påloggingsskjemaet

Påloggingsskjemaet ligner på det vi brukte for skjemainnlogging:

Bruker:
Passord:
Husk meg:

Legg merke til det nylig lagt til avkrysningsruten input - kartlegging til Husk meg. Denne innspillingen er nok til å logge inn med husk meg aktiv.

Denne standardstien kan også endres som følger:

.rememberMe (). rememberMeParameter ("husk meg-ny")

4. Cookien

Mekanismen vil opprette en ekstra informasjonskapsel - "husk meg" -kaken - når brukeren logger på.

De Husk meg informasjonskapsel inneholder følgende data:

  • brukernavn - for å identifisere den påloggede rektoren
  • utløpstid - for å utgå cookien; standard er 2 uker
  • MD5 hash - av de to foregående verdiene - brukernavn og utløpstid, pluss passord og det forhåndsdefinerte nøkkel

Det første du må legge merke til her er at både brukernavn og passord er en del av informasjonskapselen - dette betyr at informasjonskapselen ikke lenger er gyldig, hvis en av dem endres. Også, den brukernavn kan leses fra informasjonskapselen.

I tillegg er det viktig å forstå at denne mekanismen er potensielt sårbar hvis husk meg-informasjonskapselen blir fanget. Cookien vil være gyldig og brukbar til den utløper eller legitimasjonen blir endret.

5. I praksis

For å enkelt se husk meg-mekanismen som fungerer, kan du:

  • logg inn med husk meg aktiv
  • vent til økten utløper (eller fjern JSESSIONID informasjonskapsel i nettleseren)
  • Oppdater siden

Uten å huske meg aktiv, bør brukeren være det etter at cookien utløper omdirigert tilbake til påloggingssiden. Med husk meg, brukeren nå forblir pålogget ved hjelp av det nye token / informasjonskapselen.

6. Konklusjon

Denne veiledningen viste hvordan du konfigurerer og konfigurerer Husk meg-funksjonaliteten i sikkerhetskonfigurasjonen, og beskrev kort hva slags data som ligger i informasjonskapselen.

Implementeringen finner du i eksemplet Github-prosjekt - dette er et formørkelsesbasert prosjekt, så det skal være enkelt å importere og kjøre som det er.

Når prosjektet kjører lokalt, vil login.html kan nås på localhost.


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