2016-07-15 15 views
4

Ich habe eine Spring Boot-Webanwendung, die nur wenige Rest-Endpunkte enthält. Ich wollte wissen, wie wir die grundlegende Authentifizierung nur für ausgewählte Ruhe-Endpunkte aktivieren können. Nehmen wir an, ich möchte nur die /employee/{id} Anfrage authentifizieren und alle anderen Rest-Endpunkte ignorieren. Ich verwende den folgenden Code. Meine Frage ist wird die antMatcher authentifizieren nur die Anfrage angegeben? Momentan ist die Aktivierungsauthentifizierung für alle Ruheendpunkte:Nur ausgewählte Restendpunkte authentifizieren: Spring Boot

+0

Ihre Konfiguration scheint mir gut. Sind Sie sicher, dass diese Konfiguration angewendet wird? Siehst du ein zufälliges Passwort für den Standardbenutzer auf der Konsole? Bitte posten Sie Ihre Projektstruktur. –

Antwort

4

Standardmäßig sichert Spring Boot alle Endpunkte, wenn Spring Security im Klassenpfad ist.

Sie müssen explizit einen Ausschluss für alle anderen Endpunkte hinzufügen, die ohne Authentifizierung zulässig sind.

Beispiel:

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/employee/*").authenticated() 
       .anyRequest().permitAll() 
      .and() 
      .httpBasic() 
      .and() 
      .csrf().disable(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .inMemoryAuthentication() 
       .withUser("admin").password("admin").roles("USER"); 
    } 

}