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
4
A
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");
}
}
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. –