Ich habe einige lokale Dienste auf gleiche Basis-URL-Teil zugeordnet. Diese Dienste für Benutzer sollten geschlossen werden, aber einer davon wird von ZooKeeper verwendet und sollte geöffnet sein. So i konfiguriert:Spring Security 4 anpassen matchers
@Configuration
@EnableWebSecurity(debug = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("us").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/inner/service/**").hasRole("USER")
.and().antMatcher("/inner/service/event/bus").csrf().disable().anonymous()
.and().formLogin().and().logout().and().httpBasic();
}
}
diese Konfiguration nicht funktioniert. Ich habe einen offenen Service nicht nur für Veranstaltungen. Jeder der Dienste ist offen. Wenn ich die Konfiguration ändere zu:
@Configuration
@EnableWebSecurity(debug = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("us").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/inner/service/**").hasRole("USER")
.and().formLogin().and().logout().and().httpBasic();
}
}
Alle Dienste sind geschlossen als.
Ist es möglich, durch den Weg anonyme Anforderungen überall
"/**"
authentifizierten Dienste zu konfigurieren
"/inner/service/**"
mit offenen einem
"/inner/service/event/bus"
?
P.S. Open Service wird für die ZooKeeper-Antwort verwendet.