Jarné zabezpečenie kanálu HTTP / HTTPS

1. Prehľad

Tento návod ukazuje ako používať HTTPS na ochranu prihlasovacej stránky vašej aplikácie pomocou funkcie Spring's Channel Security.

Používanie HTTPS na autentifikáciu je zásadné pre ochranu integrity citlivých údajov pri preprave.

Tento článok stavia na vrchole tutoriálu Spring Security Login pridaním ďalšej vrstvy zabezpečenia. Zvýrazňujeme kroky potrebné na zabezpečenie autentifikačných údajov poskytovaním prihlasovacej stránky prostredníctvom kódovaného kanála HTTPS.

2. Počiatočné nastavenie bez zabezpečenia kanála

Začnime konfiguráciou zabezpečenia vysvetlenou v uvedenom článku.

Táto webová aplikácia umožňuje používateľom prístup k:

  1. /anonymous.html bez autentifikácie,
  2. /login.htmla
  3. ďalšie stránky (/homepage.html) po úspešnom prihlásení.

Prístup je riadený nasledujúcou konfiguráciou:

@Override protected void configure (HttpSecurity http) vyvolá výnimku {http.authorizeRequests () .antMatchers ("/ anonymous *") .anonymous (); http.authorizeRequests () .antMatchers ("/ login *") .permitAll (); http.authorizeRequests () .anyRequest () .authenticated (); 

Alebo prostredníctvom XML:

V tomto okamihu je prihlasovacia stránka k dispozícii na adrese:

//localhost:8080/spring-security-login/login.html

Používatelia sa môžu autentifikovať pomocou protokolu HTTP, čo je však nezabezpečené, pretože heslá sa budú odosielať ako obyčajný text.

3. Konfigurácia servera HTTPS

Prihlasovaciu stránku doručíme iba cez HTTPS váš webový server musí byť schopný zobrazovať stránky HTTPS. To si vyžaduje, aby bola povolená podpora SSL / TLS.

Upozorňujeme, že môžete použiť platný certifikát alebo môžete na účely testovania vygenerovať svoj vlastný.

Povedzme, že používame Tomcat a zavádzame vlastný certifikát. Najprv budeme musieť vytvoriť sklad kľúčov s certifikátom s vlastným podpisom.

Generovanie úložiska kľúčov je možné vykonať zadaním nasledujúceho príkazu v termináli:

keytool -genkey -alias tomcat -keyalg RSA -storepass changeit -keypass changeit -dname 'CN = tomcat'

Týmto sa vytvorí súkromný kľúč a certifikát s vlastným podpisom v predvolenom úložisku kľúčov pre váš užívateľský profil vo vašom domovskom priečinku.

Ďalším krokom je úprava conf / server.xml aby to vyzeralo takto:

Druhý protokol SSL / TLS Značka je zvyčajne komentovaná v konfiguračnom súbore, takže je potrebné iba nekomentovať a pridať informácie o sklade kľúčov. Ďalšie informácie sú k dispozícii v súvisiacej dokumentácii spoločnosti Tomcat.

Po zavedení konfigurácie HTTPS sa teraz môže prihlasovacia stránka zobrazovať aj na nasledujúcej adrese URL:

//localhost:8443/spring-security-login/login.html

Iné webové servery ako Tomcat by vyžadovali inú, ale pravdepodobne podobnú konfiguráciu.

4. Konfigurácia zabezpečenia kanála

V tomto okamihu sme schopní zobraziť prihlasovaciu stránku v rámci protokolu HTTP aj HTTPS. Táto časť vysvetľuje, ako nariadiť používanie protokolu HTTPS.

Vyžadovať HTTPS pre prihlasovaciu stránku upravte svoju konfiguráciu zabezpečenia pridaním nasledujúcich položiek:

http.requiresChannel () .antMatchers ("/ login *"). requireSecure ();

Alebo pridajte vyžaduje-kanál = ”https” atribút vašej konfigurácie XML:

Po tomto bode sa používatelia mohli prihlásiť iba pomocou protokolu HTTPS. Všetky relatívne odkazy napr. dopredu do /homepage.html zdedí protokol pôvodnej žiadosti a bude poskytovaný v rámci protokolu HTTPS.

Pri zmiešaní požiadaviek HTTP a HTTPS v jednej webovej aplikácii je potrebné si uvedomiť ďalšie aspekty, ktoré si vyžadujú ďalšiu konfiguráciu.

5. Miešanie HTTP a HTTPS

Z hľadiska bezpečnosti je dobrým príkladom slúžiť všetko prostredníctvom protokolu HTTPS a pevný cieľ.

Ak však použitie výhradne HTTPS nie je možné, môžeme nakonfigurovať Spring tak, aby používal HTTP, a to tak, že ku konfigurácii pripojíme nasledovné:

http.requiresChannel () .anyRequest (). vyžadujeInsecure ();

Alebo pridať vyžaduje-kanál = ”http” atribúty XML:

Toto dáva Springu pokyn, aby používal HTTP pre všetky požiadavky, ktoré nie sú explicitne nakonfigurované na použitie HTTPS, ale zároveň to porušuje pôvodný mechanizmus prihlásenia. V nasledujúcich častiach sú vysvetlené základné príčiny.

5.1. Vlastné prihlásenie na spracovanie adresy URL cez HTTPS

Konfigurácia zabezpečenia v pôvodnom bezpečnostnom návode obsahuje nasledovné:

Bez nútenia / perform_login Ak chcete použiť protokol HTTPS, došlo by k presmerovaniu na jeho variant HTTP, ktorý by stratil prihlasovacie údaje zaslaná s pôvodnou žiadosťou.

Aby sme to prekonali, musíme nakonfigurovať Spring tak, aby pre spracovanie adresy URL používala HTTPS:

http.requiresChannel () .antMatchers ("/ login *", "/ perform_login");

Všimnite si argument navyše / perform_login prešiel na antMatchers metóda.

Ekvivalent v konfigurácii XML vyžaduje pridanie nového <intercept-url> prvok do konfigurácie:

Ak vaša aplikácia používa predvolené nastavenie adresa na spracovanie prihlásenia (ktorý je /Prihlásiť sa) nemusíte to výslovne nastavovať ako /Prihlásiť sa* vzor to už zakrýva.

Keď je konfigurácia zavedená, používatelia sa môžu prihlásiť, ale nemajú prístup k overeným stránkam, napr. /homepage.html pod protokolom HTTP kvôli funkcii ochrany Springovej fixácie relácie.

5.2. Zakazuje sa ochrana fixácie relácie

Oprava relácie je problém, ktorému sa nedá vyhnúť pri prepínaní medzi HTTP a HTTPS.

Spring predvolene vytvára nové ID relácie po úspešnom prihlásení. Keď používateľ načíta prihlasovaciu stránku HTTPS, jeho užívateľská stránka ID relácie cookie bude označený ako zabezpečiť. Po prihlásení sa kontext prepne na HTTP a cookie sa stratí, pretože HTTP je nezabezpečený.

Aby sa tomu zabránilo sleptanie ochrana fixácie relácie do žiadny je požadované.

http.sessionManagement () .sessionFixation () .none ();

Alebo prostredníctvom XML:

Zakázanie ochrany fixácie relácie môže mať bezpečnostné dôsledky, preto si musíte zvážiť klady a zápory, ak máte obavy z útokov založených na fixácii relácie.

6. Test

Po použití všetkých týchto zmien konfigurácie pristupujeme /anonymous.html bez prihlásenia (pomocou oboch // alebo //) vás presmeruje na stránku prostredníctvom protokolu HTTP.

Otváranie ďalších stránok sa mi priamo páči /homepage.html by vás malo presmerovať na prihlasovaciu stránku cez HTTPS a po prihlásení budete presmerovaní späť na /homepage.html pomocou protokolu HTTP.

7. Záver

V tomto výučbe sme sa pozreli na to, ako nakonfigurovať jarnú webovú aplikáciu, ktorá komunikuje cez HTTP okrem mechanizmu prihlásenia. Avšak nové moderné webové aplikácie by mali takmer vždy používať výhradne protokol HTTPS ako ich komunikačný protokol. Zníženie úrovne zabezpečenia alebo vypnutie bezpečnostných prvkov (ako ochrana fixácie relácie) nikdy nie je dobrý nápad.

Tento výukový program je založený na kódovej základni dostupnej na GitHub. Konfiguráciu zabezpečenia kanála je možné povoliť uvedením zoznamu https ako aktívny jarný profil.


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