Könnte jemand erklären, wann zu überschreiben ist configure(HttpSecurity), configure(WebSecurity)und configure(AuthenticationManagerBuilder)?
Könnte jemand erklären, wann zu überschreiben ist configure(HttpSecurity), configure(WebSecurity)und configure(AuthenticationManagerBuilder)?
Antworten:
configure (AuthenticationManagerBuilder) wird verwendet, um einen Authentifizierungsmechanismus einzurichten, indem AuthenticationProviders einfach hinzugefügt werden können: Beispiel: Im Folgenden wird die speicherinterne Authentifizierung mit den integrierten Anmeldungen "Benutzer" und "Administrator" definiert.
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
configure (HttpSecurity) ermöglicht die Konfiguration der webbasierten Sicherheit auf Ressourcenebene basierend auf einer Auswahlübereinstimmung. Beispiel: Das folgende Beispiel beschränkt die URLs, die mit / admin / beginnen, auf Benutzer mit ADMIN-Rolle und erklärt, dass andere URLs erforderlich sind erfolgreich authentifiziert.
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
configure (WebSecurity) wird für Konfigurationseinstellungen verwendet, die sich auf die globale Sicherheit auswirken (Ressourcen ignorieren, Debug-Modus festlegen, Anforderungen durch Implementierung einer benutzerdefinierten Firewall-Definition ablehnen). Die folgende Methode würde beispielsweise dazu führen, dass Anforderungen, die mit / resources / beginnen, zu Authentifizierungszwecken ignoriert werden.
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
Weitere Informationen finden Sie unter folgendem Link. Spring Security Java Config Preview: Web Security
Bei der allgemeinen Verwendung der WebSecurity- ignoring()Methode wird Spring Security weggelassen , und keine der Funktionen von Spring Security ist verfügbar. WebSecurity basiert auf HttpSecurity.
@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();
}
Mit WebSecurity im obigen Beispiel kann Spring /resources/**und ignorieren /publics/**. Deshalb ist die .antMatchers("/publics/**").hasRole("USER")in HttpSecurity ist unbedacht .
Dadurch wird das Anforderungsmuster vollständig aus der Sicherheitsfilterkette entfernt. Beachten Sie, dass auf alles, was mit diesem Pfad übereinstimmt, keine Authentifizierungs- oder Autorisierungsdienste angewendet werden und frei zugänglich sind.
configure(HttpSecurity)Ermöglicht die Konfiguration der webbasierten Sicherheit auf Ressourcenebene basierend auf einer Auswahlübereinstimmung. Beispiel: Das folgende Beispiel beschränkt die URLs, die mit beginnen, /admin/auf Benutzer mit ADMIN-Rolle und erklärt, dass alle anderen URLs erfolgreich authentifiziert werden müssen.
configure(WebSecurity)wird für Konfigurationseinstellungen verwendet, die sich auf die globale Sicherheit auswirken (Ressourcen ignorieren, Debug-Modus festlegen, Anforderungen durch Implementierung einer benutzerdefinierten Firewall-Definition ablehnen). Die folgende Methode würde beispielsweise dazu führen, dass Anforderungen, die mit beginnen /resources/, für Authentifizierungszwecke ignoriert werden.
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
SecurityBuilder zum Erstellen eines AuthenticationManager. Ermöglicht das einfache Einbauen von Speicherauthentifizierung, LDAP-Authentifizierung, JDBC-basierter Authentifizierung, Hinzufügen von UserDetailsService und Hinzufügen von AuthenticationProvidern .
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}
http.authorizeUrls(). Vielleicht wurde sie vorhttp.authorizeRequests()einiger Zeit umbenannt .