Qualcuno potrebbe spiegare quando eseguire l'override configure(HttpSecurity)
, configure(WebSecurity)
e configure(AuthenticationManagerBuilder)
?
Qualcuno potrebbe spiegare quando eseguire l'override configure(HttpSecurity)
, configure(WebSecurity)
e configure(AuthenticationManagerBuilder)
?
Risposte:
configure (AuthenticationManagerBuilder) viene utilizzato per stabilire un meccanismo di autenticazione consentendo di aggiungere facilmente AuthenticationProviders: ad es. Quanto segue definisce l'autenticazione in memoria con gli accessi "utente" e "admin" incorporati.
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
configure (HttpSecurity) consente la configurazione della sicurezza basata sul web a livello di risorsa, in base a una corrispondenza di selezione - ad esempio, l'esempio seguente limita gli URL che iniziano con / admin / agli utenti che hanno il ruolo ADMIN e dichiara che qualsiasi altro URL deve essere autenticato con successo.
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
configure (WebSecurity) viene utilizzato per le impostazioni di configurazione che influiscono sulla sicurezza globale (ignora le risorse, imposta la modalità di debug, rifiuta le richieste implementando una definizione firewall personalizzata). Ad esempio, il seguente metodo farebbe sì che qualsiasi richiesta che inizia con / resources / venga ignorata per scopi di autenticazione.
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
È possibile fare riferimento al seguente collegamento per ulteriori informazioni Spring Security Java Config Preview: Web Security
L'uso generale del ignoring()
metodo WebSecurity omette Spring Security e nessuna delle funzionalità di Spring Security sarà disponibile. WebSecurity si basa su 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();
}
WebSecurity nell'esempio precedente consente a Spring di ignorare /resources/**
e /publics/**
. Pertanto l' .antMatchers("/publics/**").hasRole("USER")
in HttpSecurity è unconsidered .
Ciò ometterà completamente il modello di richiesta dalla catena del filtro di sicurezza. Nota che qualsiasi cosa che corrisponde a questo percorso non avrà quindi alcun servizio di autenticazione o autorizzazione applicato e sarà liberamente accessibile.
configure(HttpSecurity)
consente la configurazione della sicurezza basata sul Web a livello di risorsa , in base a una corrispondenza di selezione, ad es. L'esempio seguente limita gli URL che iniziano con /admin/
agli utenti che hanno il ruolo ADMIN e dichiara che qualsiasi altro URL deve essere autenticato correttamente.
configure(WebSecurity)
viene utilizzato per le impostazioni di configurazione che influiscono sulla sicurezza globale (ignora le risorse, imposta la modalità di debug, rifiuta le richieste implementando una definizione firewall personalizzata). Ad esempio, il seguente metodo farebbe sì che qualsiasi richiesta che inizia con /resources/
venga ignorata per scopi di autenticazione .
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
SecurityBuilder utilizzato per creare un file AuthenticationManager
. Consente di creare facilmente autenticazione in memoria, autenticazione LDAP, autenticazione basata su JDBC, aggiunta di UserDetailsService e aggiunta di AuthenticationProvider .
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}
http.authorizeUrls()
, forse è stato rinominatohttp.authorizeRequests()
qualche tempo fa.