Ručna odjava s proljetnom sigurnošću

1. Uvod

Spring Security je standard za zaštitu aplikacija utemeljenih na Springu. Ima nekoliko značajki za upravljanje provjerom autentičnosti korisnika, uključujući prijavu i odjavu.

U ovom uputstvu usredotočit ćemo se na ručna odjava s Spring Security.

Pretpostavit ćemo da čitatelji već razumiju standardni postupak odjave iz Spring Securitya.

2. Osnovna odjava

Kada korisnik pokuša odjavu, to ima nekoliko posljedica na njegovo trenutno stanje sesije . Sjednicu moramo uništiti u dva koraka:

  1. Poništi informacije o HTTP sesiji.
  2. Čisto SecurityContext jer sadrži podatke za provjeru autentičnosti.

Te dvije radnje izvodi SecurityContextLogoutHandler.

Da vidimo to na djelu:

Javna klasa @Configuration DefaultLogoutConfiguration proširuje WebSecurityConfigurerAdapter {@Override zaštićena void konfiguracija (HttpSecurity http) baca izuzetak {http .logout (logout -> logout .logoutUrl ("/ basic / basiclogout") .addLogoutHandlerL (Security). }}

Imajte na umu da SecurityContextLogoutHandler po zadanom dodaje Spring Security - mi ga ovdje samo prikazujemo radi preglednosti.

3. Odjava iz brisanja kolačića

Često odjava zahtijeva da obrišemo neke ili sve korisničke kolačiće.

Možemo stvoriti svoje LogoutHandler koja petlja kroz sve kolačiće i istječe im pri odjavi:

@Configuration javna klasa AllCookieClearingLogoutConfiguration proširuje WebSecurityConfigurerAdapter {@Override zaštićena void konfiguracija (HttpSecurity http) baca izuzetak {http .logout (logout -> logout .logoutUrl ("/ cookies / cookielogout"), addLogout (request, response, auth, request, response, request, answer, auth,. {for (Cookie cookie: request.getCookies ()) {String cookieName = cookie.getName (); Cookie cookieToDelete = novi Cookie (cookieName, null); cookieToDelete.setMaxAge (0); response.addCookie (cookieToDelete);}}) ); }}

S druge strane, Spring Security pruža CookieClearingLogoutHandler koji je spreman za upotrebu rukovatelj odjavom za uklanjanje kolačića.

4. Obriši podatke o web mjestu Odjava iz zaglavlja

Alternativno, možemo koristiti posebno zaglavlje HTTP odgovora da postignemo istu stvar; ovdje je Obriši podatke o web mjestu Zaglavlje dolazi u igru. The Web lokacija Clear-Data zaglavlje briše podatke pregledavanja (kolačići, pohrana, predmemorija) povezani s web mjestom koja traži:

@Configuration javna klasa ClearSiteDataHeaderLogoutConfiguration proširuje WebSecurityConfigurerAdapter {private static final ClearSiteDataHeaderWriter.Directive [] SOURCE = {CACHE, COOKIES, STORAGE, EXECUTION_CONTEXTS}; @Override zaštićena void konfiguracija (HttpSecurity http) baca izuzetak {http .logout (odjava -> odjava .logoutUrl ("/ csd / csdlogout") .addLogoutHandler (novi HeaderWriterLogoutHandler (novi ClearSiteDataHeaderWriter); }}

Imajte na umu da čišćenje skladišnog prostora može pokvariti stanje aplikacije kada očistimo samo jednu vrstu pohrane. Stoga se zbog nepotpunog čišćenja zaglavlje primjenjuje samo ako je zahtjev siguran.

5. Zaključak

Spring Security ima brojne ugrađene značajke za obradu scenarija provjere autentičnosti. Uvijek dobro dođe svladati kako programski koristiti te značajke.

Kao i uvijek, kod za ove primjere dostupan je na GitHubu.


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