2017-11-22 7 views
0

Ich bin eine Basis-Authentifizierung und IP-Filter zu konfigurieren versuchen, die grundlegende Auth, mit diesem configure gut funktioniert:Federbasisauthentifizierung und IP-Filter

protected void configure(HttpSecurity http) throws Exception { 
    http 
     .sessionManagement() 
      .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 
      .and() 
     .csrf() 
      .disable() 
     .authorizeRequests() 
      .anyRequest() 
      .fullyAuthenticated() 
      .and() 
     .httpBasic(); 
} 

Ich möchte IP-Filter hinzufügen, Ive Lesen Sie etwas über hasIpAddress, aber ich weiß nicht, wie es benutzt wird.

+0

Ich habe hinzuzufügen versucht: .authorizeRequests() .anyRequest() .fullyAuthenticated() .hasIpAddress ("128.0.0.1"), aber die Syntax in der falschen –

+0

sollten Sie [Bearbeiten] Ihr Kommentar in Frage weil es wichtig ist, deine Frage zu verstehen. – dur

Antwort

1

Für XML configuraton siehe Spring Security Reference:

26,2 Web Security Expressions

Ausdrücke verwenden, um einzelne URLs zu sichern, würden Sie zuerst das use-expressions Attribut im <http> Element true einstellen müssen. Spring Security erwartet dann, dass die Attribute access der Elemente <intercept-url> Spring-EL-Ausdrücke enthalten. Die Ausdrücke sollten zu einem Booleschen Wert ausgewertet werden und definieren, ob der Zugriff zulässig sein soll oder nicht. Zum Beispiel:

<http> 
    <intercept-url pattern="/admin*" 
     access="hasRole('admin') and hasIpAddress('192.168.1.0/24')"/> 
    ... 
</http> 

Hier haben wir festgelegt, dass der „admin“ Bereich einer Anwendung (durch das URL-Muster definiert) sollte nur für Benutzer zur Verfügung, die die gewährte Autorität „admin“ hat und deren IP-Adresse übereinstimmt eine lokales Subnetz. Wir haben bereits den eingebauten Ausdruck hasRole im vorherigen Abschnitt gesehen. Der Ausdruck hasIpAddress ist ein zusätzlicher integrierter Ausdruck, der spezifisch für die Websicherheit ist. Sie wird durch die Klasse WebSecurityExpressionRoot definiert, deren Instanz beim Auswerten von Webzugriffsausdrücken als Ausdrucksstammobjekt verwendet wird.

Für Java-Konfiguration siehe ExpressionUrlAuthorizationConfigurer.AuthorizedUrl#access:

Parameter:

attribute - der Ausdruck die URLs (dh „hasRole ('ROLE_USER') und hasRole ('ROLE_SUPER') zu sichern ")

Ihr geänderter Code:

protected void configure(HttpSecurity http) throws Exception { 
    http 
     .sessionManagement() 
      .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 
      .and() 
     .csrf() 
      .disable() 
     .authorizeRequests() 
      .anyRequest().access("isFullyAuthenticated() and hasIpAddress('192.168.1.0/24')") 
      .and() 
     .httpBasic(); 
}