webentwicklung-frage-antwort-db.com.de

Korrekte Verwendung von WebSecurity in WebSecurityConfigurerAdapter

In meiner Spring Boot Anwendung, die auf Version 1.3.0.BUILD-SNAPSHOT basiert, habe ich die statischen Ressourcen (images, css, js) im Ordner static unter resources.

Ich sehe einige Beispiele zur Sicherheitskonfiguration wie die folgenden:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(final WebSecurity web) throws Exception {
        web.ignoring()
           .antMatchers("/static/**");
    }
}

Ist das Beispiel richtig? Was soll die Wirkung sein? Wie kann ich überprüfen, ob es funktioniert (z. B. eine Anfrage an localhost:8080/something? ..... Welche coolen Dinge kann ich mit WebSecurity machen?

9
JeanValjean

Ihr Beispiel bedeutet, dass Spring (Web) Security Url-Pattern ignoriert, das dem von Ihnen definierten Ausdruck ("/static/**") entspricht. Diese URL wird von Security übersprungen und ist daher nicht gesichert.

Erlaubt das Hinzufügen von RequestMatcher-Instanzen, die Spring Security ignorieren sollte. Web Security, die von Spring Security (einschließlich SecurityContext) bereitgestellt wird, ist für HttpServletRequest, die übereinstimmen, nicht verfügbar. In der Regel sollten die registrierten Anforderungen nur statische Ressourcen sein. Berücksichtigen Sie bei dynamischen Anforderungen die Zuordnung der Anforderung, um stattdessen alle Benutzer zuzulassen. 

Siehe: http://docs.spring.io/autorepo/docs/spring-security/4.0.0.RELEASE/apidocs/org/springframework/security/config/annotation/web/builders/WebSecurity.html

Sie können beliebig viele Url-Pattern-gesicherte oder ungesicherte haben. Mit Spring Security verfügen Sie über Authentifizierungs- und Zugriffssteuerungsfunktionen für die Web-Schicht einer Anwendung. Sie können auch Benutzer mit einer bestimmten Rolle einschränken, um auf eine partielle Url usw. zuzugreifen. ____. Schauen Sie hier: http://docs.spring.io/spring-security/site/ docs/aktuell/referenz/html/

Bestellpriorität des URL-Musters

Wenn die angegebenen Muster mit einer eingehenden Anforderung abgeglichen werden, erfolgt der Abgleich in der Reihenfolge, in der die Elemente deklariert werden. Daher sollten die spezifischsten Übereinstimmungsmuster zuerst und die allgemeinsten als letztes erscheinen.

Die http.authorizeRequests () -Methode enthält mehrere untergeordnete Elemente Jeder Matcher wird in der Reihenfolge betrachtet, in der er deklariert wurde.

Muster werden immer in der Reihenfolge ausgewertet, in der sie definiert sind. Daher ist es wichtig, dass spezifischere Muster in der Liste höher definiert werden als weniger spezifische Muster.

Schauen Sie: http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#filter-security-interceptor

Beispiel 1
Die allgemeine Verwendung der WebSecurity ignoring() Method verzichtet auf Spring Security und es sind keine Features von Spring Security verfügbar . WebSecurity basiert auf HttpSecurity. In der XML-Konfiguration können Sie <http pattern="/resources/**" security="none"/> schreiben.

@Override
public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**")
        .antMatchers("/publics/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .antMatchers("/publics/**").hasRole("USER") // no effect
        .anyRequest().authenticated();
}

WebSecurity im obigen Beispiel lässt Spring /resources/** und /publics/** ignorieren. Daher wird .antMatchers("/publics/**").hasRole("USER") in HttpSecurity nicht berücksichtigt.

Dadurch wird das Anforderungsmuster vollständig aus der Sicherheitsfilterkette entfernt. Beachten Sie, dass für diesen Pfad keine Authentifizierungs- oder Autorisierungsdienste gelten und der Zugriff frei ist.

Beispiel 2
Muster werden immer in der Reihenfolge ausgewertet. Der folgende Abgleich ist ungültig, da der erste alle Anforderungen erfüllt und niemals den zweiten Treffer anwendet:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/**").hasRole("USER")
        .antMatchers("/admin/**").hasRole("ADMIN"):
}
19
sven.kwiotek

In dem von Ihnen freigegebenen Code. Wenn Sie Ihre statischen Dateien (z. B. CSS/JS usw.) in einem Ordner mit der Bezeichnung static gespeichert haben, werden alle statischen Ressourcen zur Seite hinzugefügt

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

keine Ihrer statischen Ressourcen wird geladen.

Spring Security ist extrem mächtig, Spring verfügt über eine großartige Dokumentation, so dass Sie sich einfach darüber informieren sollten.

Hier ist ein link

0
PaulRyan17