Herkes geçersiz kılmak zaman açıklayabilir misiniz configure(HttpSecurity)
, configure(WebSecurity)
ve configure(AuthenticationManagerBuilder)
?
Herkes geçersiz kılmak zaman açıklayabilir misiniz configure(HttpSecurity)
, configure(WebSecurity)
ve configure(AuthenticationManagerBuilder)
?
Yanıtlar:
configure (AuthenticationManagerBuilder) , AuthenticationProviders'ın kolayca eklenmesine izin vererek bir kimlik doğrulama mekanizması oluşturmak için kullanılır: örn. Aşağıdaki, yerleşik 'kullanıcı' ve 'yönetici' oturum açma bilgileriyle bellek içi kimlik doğrulamayı tanımlar.
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
configure (HttpSecurity) , bir seçim eşleşmesine dayalı olarak bir kaynak düzeyinde web tabanlı güvenliğin yapılandırılmasına izin verir - örn. Aşağıdaki örnek, / admin / ile başlayan URL'leri ADMIN rolüne sahip kullanıcılarla sınırlar ve diğer URL'lerin olması gerektiğini bildirir başarıyla doğrulandı.
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
configure (WebSecurity) , genel güvenliği etkileyen yapılandırma ayarları için kullanılır (kaynakları yoksayma, hata ayıklama modunu ayarlama, özel bir güvenlik duvarı tanımı uygulayarak istekleri reddetme). Örneğin, aşağıdaki yöntem, / kaynaklar / ile başlayan herhangi bir isteğin kimlik doğrulama amacıyla yok sayılmasına neden olur.
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
Daha fazla bilgi için aşağıdaki bağlantıya başvurabilirsiniz Spring Security Java Config Preview: Web Security
WebSecurity ignoring()
yönteminin genel kullanımı, Spring Security'yi ihmal eder ve Spring Security'nin hiçbir özelliği kullanılamaz. WebSecurity, HttpSecurity'e dayanmaktadır.
@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();
}
Yukarıdaki örnekte WebSecurity, Spring'in /resources/**
ve /publics/**
. Bu nedenle, .antMatchers("/publics/**").hasRole("USER")
HttpSecurity'de dikkate alınmaz .
Bu, istek modelini güvenlik filtresi zincirinden tamamen çıkaracaktır. Bu yolla eşleşen herhangi bir şeyin, hiçbir kimlik doğrulama veya yetkilendirme hizmetinin uygulanmayacağını ve serbestçe erişilebileceğini unutmayın.
configure(HttpSecurity)
web tabanlı güvenliğin yapılandırılmasına izin verir. bir seçim eşleşmesine dayalı olarak kaynak düzeyinde - örn. Aşağıdaki örnek /admin/
, ADMIN rolüne sahip kullanıcılarla başlayan URL'leri kısıtlar ve diğer URL'lerin başarıyla doğrulanması gerektiğini bildirir .
configure(WebSecurity)
yapılandırma ayarları için kullanılır genel güvenliği etkileyen (kaynakları yoksayma, hata ayıklama modunu ayarlama, özel bir güvenlik duvarı tanımı uygulayarak istekleri reddetme). Örneğin, aşağıdaki yöntemi ile başlayan herhangi bir isteği neden olacak /resources/
olan kimlik için göz ardı amaçlar.
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
SecurityBuilder bir AuthenticationManager
. Bellek kimlik doğrulaması, LDAP kimlik doğrulaması, JDBC tabanlı kimlik doğrulama, UserDetailsService ekleme ve AuthenticationProvider'lar eklemeyi kolayca oluşturmaya izin verir .
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}
http.authorizeUrls()
, belkihttp.authorizeRequests()
bir süre önce yeniden adlandırıldı .