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:
- Informácie o relácii HTTP sú neplatné.
- 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.