Spring Security - sigurnost nijedna, filtri nisu dostupni, dozvola za pristupAll

1. Pregled

Spring Security nudi nekoliko mehanizama za konfiguriranje uzorka zahtjeva kao nesigurnog ili omogućavanja svih pristupa. Ovisno o svakom od ovih mehanizama - to može značiti ili uopće ne pokretanje lanca sigurnosnog filtra na toj stazi ili pokretanje lanca filtra i omogućavanje pristupa.

2. pristup = "dozvoliSve"

Postavljanje element sa pristup = "dozvoliSve" konfigurirat će autorizaciju tako da su svi zahtjevi dopušteno na tom određenom putu:

Ili putem Java konfiguracije:

http.authorizeRequests (). antMatchers ("/ login *"). allowAll ();

To se postiže bez onemogućavanja sigurnosnih filtara - oni se i dalje izvode, tako da će sve funkcije povezane s Spring Security i dalje biti dostupne.

3. filtri = "nijedan"

Ovo je značajka prije proljeća 3.1 zastarjelo i zamijenjeno u proljeće 3.1.

The filtri atribut u potpunosti onemogućava lanac filtara Spring Security na toj određenoj putanji zahtjeva:

To može uzrokovati probleme kada će obrada zahtjeva zahtijevati neke funkcije Spring Securitya.

Budući da je ovo zastarjela značajka Spring verzija novijih od 3.0, upotreba s Springom 3.1 rezultirat će izuzećem pri izvođenju pri pokretanju:

TEŠKO: Inicijalizacija konteksta nije uspjela org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Problem s konfiguracijom: Korištenje "filters = 'none'" više nije podržano. Definirajte zasebni element za obrazac koji želite izuzeti i upotrijebite atribut "security = 'none'". Resurs koji vrijeđa: resurs puta klase [webSecurityConfig.xml] na o.s.b.f.p.FailFastProblemReporter.error (FailFastProblemReporter.java:68)

4. sigurnost = "nema"

Kao što smo vidjeli u gornjoj poruci o pogrešci, Spring 3.1 zamjenjuje filtri = "nijedan" s novim izrazom - sigurnost = "nema".

Promijenio se i opseg - to više nije navedeno u razina elementa. Umjesto toga, Spring 3.1 dopušta višestruko elementi treba definirati - svaki sa svojom konfiguracijom lanca sigurnosnog filtra. Dakle, novi sigurnosni atribut sada pripada na razina elementa.

U praksi će ovo izgledati ovako:

Ili s Java konfiguracijom:

web.ignoring (). antMatchers ("/ resources / **");

Umjesto starog:

Slično filtri = "nijedan", ovo će također u potpunosti onemogućiti lanac sigurnosnog filtra za taj put zahtjeva - pa kada se zahtjev obrađuje u aplikaciji, značajke Spring Security neće biti dostupne.

To nije problem za gornje primjere koji se uglavnom bave opsluživanje statičkih izvora - tamo gdje se ne odvija stvarna obrada. Međutim, ako se sa zahtjevom na neki način postupa programski - tada se rade sigurnosne funkcionalnosti kao što je zahtijeva-kanal, pristup trenutnom korisniku ili pozivanje zaštićenih metoda neće biti dostupni.

Iz istog razloga nema smisla navesti dodatne atribute na element koji je već konfiguriran sa sigurnost = "nema" jer taj put zahtjeva nije osiguran i atributi će se jednostavno zanemariti.

Alternativno, pristup = 'IS_AUTHENTICATED_ANONYMOUSLY' može se koristiti za omogućavanje anonimnog pristupa.

5. Upozorenja za sigurnost = "nema"

Kada se koristi višestruko elementi, neki konfigurirani s sigurnost = "nema", imajte na umu da je važan redoslijed definiranja tih elemenata. Želimo imati određeno staze prvo, slijedili su univerzalni obrazac na samom kraju.

Također imajte na umu da, ako je element ne navodi obrazac, a zatim se prema zadanim postavkama preslikava na univerzalni obrazac podudaranja - "/ **" - pa opet, ovaj element mora biti zadnji. Ako redoslijed elemenata nije točan, znak stvaranje lanca sigurnosnog filtra neće uspjeti:

Uzrok: java.lang.IllegalArgumentException: Univerzalni obrazac podudaranja ('/ **') definiran je prije ostalih obrazaca u lancu filtra, zbog čega se oni zanemaruju. Molimo provjerite redoslijed u vašem prostoru imena ili u konfiguraciji graha FilterChainProxy na o.s.s.c.h.DefaultFilterChainValidator.checkPathOrder (DefaultFilterChainValidator.java:49) na o.s.s.c.h.DefaultFilterChainValidator.validate (DefaultFilterCjava.

6. Zaključak

Ovaj članak raspravlja o mogućnostima dopuštanja pristupa stazi s Spring Security - s naglaskom na razlikama između filtri = "nema", sigurnost = "nema" i pristup = "dozvoli sve".

Kao i obično, primjeri su dostupni na GitHubu.


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