Giriş
WebSecurityConfigurerAdapter tarafından kullanılır. Bir endpoint'e erişimin nasıl olacağını ayarlamak içindir. İskeketi şöyledir.
Örnek
Çoğu örnekte şöyle yapılıyor.
Benim anladığım (1) ile işaretli satıra gerek yok. Zaten her şey doğrulama ile erişilecek şekilde başlıyor.
(2) ile işaretli satırda doğrulama olmadan erişilebilecek adresler belirtiliyor. Yani "/register","/login" mutlaka lazım. Buraya "/logout" koymamak lazım çünkü o zaman login olmamış kullanıcı bir başkasını logout edebilir.
(3) ile işaretli satır mutlaka lazım. Geri kalan her şeyi koruma altına alıyor.
(4) ile başlayan satır mutlaka lazım. Doğrulanmamış kullanıcıyı ana sayfaya yönlendiriyor.
(2) ve (3) ExpressionUrlAuthorizationConfigurer Sınıfı tarafından gerçekleştirilir.
(4) ise ExceptionHandlingConfigurer tarafından gerçekleştirilir.
addFilterAfter metodu
HttpSecurity Sınıfı Filtre Metodları yazısına taşıdım
addFilterAt metodu
WebSecurityConfigurerAdapter tarafından kullanılır. Bir endpoint'e erişimin nasıl olacağını ayarlamak içindir. İskeketi şöyledir.
@Configuration
@EnableWebSecurity
public static class MySecurityConfig extends WebSecurityConfigurerAdapter {
  public MySecurityConfig() {
    super();
  }
  @Override
  public void configure(HttpSecurity http) throws Exception {
    ...
  }
}Örnek
Çoğu örnekte şöyle yapılıyor.
@Override
protected void configure(HttpSecurity http) throws Exception {
  http.antMatcher("/**")                                                   (1)
    .authorizeRequests()
      .antMatchers("/", "/login**", "/webjars/**").permitAll()             (2)
      .anyRequest().authenticated()                                        (3)
    .and().exceptionHandling()
      .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/")) (4)
    ...
}
Benim anladığım (1) ile işaretli satıra gerek yok. Zaten her şey doğrulama ile erişilecek şekilde başlıyor.
(2) ile işaretli satırda doğrulama olmadan erişilebilecek adresler belirtiliyor. Yani "/register","/login" mutlaka lazım. Buraya "/logout" koymamak lazım çünkü o zaman login olmamış kullanıcı bir başkasını logout edebilir.
(3) ile işaretli satır mutlaka lazım. Geri kalan her şeyi koruma altına alıyor.
(4) ile başlayan satır mutlaka lazım. Doğrulanmamış kullanıcıyı ana sayfaya yönlendiriyor.
(2) ve (3) ExpressionUrlAuthorizationConfigurer Sınıfı tarafından gerçekleştirilir.
(4) ise ExceptionHandlingConfigurer tarafından gerçekleştirilir.
addFilterAfter metodu
HttpSecurity Sınıfı Filtre Metodları yazısına taşıdım
addFilterAt metodu
HttpSecurity Sınıfı Filtre Metodları yazısına taşıdım
authorizeRequests metodu
ExpressionUrlAuthorizationConfigurer Sınıfı yazısına taşıdım.
csrf metodu
CsrfConfigurer Sınıfı yazısına taşıdım.
cors metodu
CorsConfigurer Sınıfı yazısına taşıdım.
exceptionHandling metodu
ExceptionHandlingConfigurer nesnesi döner.
formLogin metodu
FormLoginConfigurer Sınıfı yazısına taşıdım.
headers metodu
HeadersConfigurer nesnesi döner.
httpBasic metodu
HttpBasicConfigurer Sınıfı yazısına taşıdım.
logout metodu
LogoutConfigurer Sınıfı yazısına taşıdım.
oauth2Client metodu
OAuth2ClientConfigurer Sınıfı yazısına taşıdım.
oauth2Login metodu
OAuth2LoginConfigurer Sınıfı yazısına taşıdım.
oauth2ResourceServer metodu
OAuth2ResourceServerConfigurer Sınıfı yazısına taşıdım.
OAuth2ResourceServerConfigurer Sınıfı yazısına taşıdım.
rememberMe metodu
RemembermeConfigurer Sınıfı yazısına taşıdım
requestMatcher metodu
Sunucunun cevap vereceği adresleri belirtir
Örnek
Şöyle yaparız
@Override
protected void configure(HttpSecurity http) throws Exception {
  http
  .requestMatcher(new NegatedRequestMatcher(new AntPathRequestMatcher("/api/**")))
  .authorizeRequests()
  ...
}RequestMatcherConfigurer Sınıfı yazısına taşıdım.
requiresChannel metodu
ChannelSecurityConfigurer Sınıfı yazısına taşıdım
securityContext metodu
SecurityContext bilgisinin HttpSession'da saklanması için şöyle yaparız.
.and().csrf().csrfTokenRepository(csrfTokenRepository())
.and().securityContext().securityContextRepository(myContextRepository())@Bean
public MyHttpSessionSecurityContextRepository myContextRepository() {
  return new MytHttpSessionSecurityContextRepository();
}public class MyHttpSessionSecurityContextRepository extends
  HttpSessionSecurityContextRepository {
  ...
}SessionManagementConfigurer Sınıfı yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder