Ručné odhlásenie so zabezpečením pružiny

1. Úvod

Spring Security je štandard pre zabezpečenie aplikácií založených na Spring. Má niekoľko funkcií na správu autentifikácie používateľa, vrátane prihlásenia a odhlásenia.

V tejto príručke sa zameriame na ručné odhlásenie s pružinovým zabezpečením.

Budeme predpokladať, že čitatelia už chápu štandardný proces odhlásenia Spring Security.

2. Základné odhlásenie

Kedy používateľ sa pokúsi o odhlásenie, má to niekoľko dôsledkov na jeho aktuálny stav relácie . Musíme reláciu zničiť dvoma krokmi:

  1. Informácie o relácii HTTP sú neplatné.
  2. jasný SecurityContext pretože obsahuje autentifikačné informácie.

Tieto dve činnosti vykonáva SecurityContextLogoutHandler.

Pozrime sa na to v akcii:

@Configuration verejná trieda DefaultLogoutConfiguration rozširuje WebSecurityConfigurerAdapter {@Override chránená neplatná konfigurácia (HttpSecurity http) vyvolá výnimku {http .logout (logout -> logout .logoutUrl ("/ basic / basiclogout") .addLogoutHandler (nový SecurityContextLogoutH)) }}

Poznač si to SecurityContextLogoutHandler je v predvolenom nastavení pridaný Spring Security - tu ho len kvôli prehľadnosti ukazujeme.

3. Odhlášení z cookie

Odhlásenie často vyžaduje, aby sme vymazali niektoré alebo všetky súbory cookie používateľa.

Môžeme si vytvoriť svoj vlastný LogoutHandler ktorý prechádza cez všetky súbory cookie a vyprší ich platnosť pri odhlásení:

@Configuration verejná trieda AllCookieClearingLogoutConfiguration rozširuje WebSecurityConfigurerAdapter {@Override protected void configure (HttpSecurity http) vyvolá výnimku {http .logout (logout -> logout .logoutUrl ("/ cookies / cookielogout") .addLogoutHandler (- požiadavka, odpoveď auth) {for (Cookie cookie: request.getCookies ()) {String cookieName = cookie.getName (); Cookie cookieToDelete = new Cookie (cookieName, null); cookieToDelete.setMaxAge (0); response.addCookie (cookieToDelete);}}) ); }}

Na druhej strane poskytuje Spring Security CookieClearingLogoutHandler čo je obslužný program na odhlásenie pripravený na použitie na odstránenie súborov cookie.

4. Vymazať údaje o stránkach Odhlásenie hlavičky

Prípadne môžeme na dosiahnutie toho istého použiť špeciálnu hlavičku odpovede HTTP; to je miesto, kde Vymazať údaje o stránkach hlavička vstupuje do hry. The Vymazať údaje hlavička vymaže údaje o prehliadaní (cookies, úložisko, vyrovnávacia pamäť) spojené s požadujúcim webom:

@Configuration verejná trieda ClearSiteDataHeaderLogoutConfiguration rozširuje WebSecurityConfigurerAdapter {private static final ClearSiteDataHeaderWriter.Directive [] SOURCE = {CACHE, COOKIES, STORAGE, EXECUTION_CONTEXTS}; @Override protected void configure (HttpSecurity http) vyvolá výnimku {http .logout (odhlásenie -> odhlásenie .logoutUrl ("/ csd / csdlogout"). AddLogoutHandler (nový HeaderWriterLogoutHandler (nový ClearSiteDataHeaderWriter (SOURCE))))) }}

Upozorňujeme, že vyčistenie úložiska môže narušiť stav aplikácie, keď vyčistíme iba jeden typ úložiska. Z tohto dôvodu sa kvôli neúplnému zúčtovaniu použije hlavička iba v prípade, že je požiadavka zabezpečená.

5. Záver

Spring Security má veľa vstavaných funkcií na zvládnutie scenárov autentifikácie. Osvojiť si, ako tieto funkcie programovo využívať, sa vždy zíde.

Ako vždy, kód týchto príkladov je k dispozícii na GitHub.


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