[Spring Security] 1-1. SecurityConfig 메서드

Beomsu Son·2023년 6월 23일
0
post-thumbnail

💡 이 포스트에 적힌 메서드말고 다른 메서드는 필요할 때마다 수정해서 올리고 있습니다!

필터체인을 등록하기 위한 filterChain(HttpSecurity http) 메서드를 보면 매개변수에 여러 메서드를 추가로 달아서 최종적으로 이를 build한 것을 리턴한다.

이 HttpSecurity를 build하기 전에 해주는 다양한 메서드에 대해서 알아보자

  • csrf() : csrf 공격에 대한 설정을 하는 메서드.
    .csrf((csrf) -> {
    		csrf.disable();
    })
    세션을 사용하지 않는다면 csrf에 대해 안전하기 때문에 보통은 disable을 해둔다.
  • authorizeHttpRequests(): http 요청에 대한 인증을 주로 다룬다.
    .authorizeHttpRequests((httpRequest) -> {
    		httpRequest.requestMatchers("somePath").authenticated();
    
    		httpRequest.requestMatchers("somePath").hasAnyRole("ADMIN", "MANAGER");
    
    		httpRequest.requestMatchers("somePath").hasRole("ADMIN");
    
    		httpRequest.anyRequest().permitAll();
    })
    • .requestMatchers(String) : 매개변수로 path를 넣어준다. 해당 경로에 대한 요청에 대해서 다룬다.
      • **.authenticated() : 일단 인증만 되어있으면 해당 path 요청을 마음대로 할 수 있다.**
      • **.hasAnyRole(String, String...) : 매개변수로 권한이름을 넣어준다. 갯수는 상관없다. 해당 권한들 중 하나라도 가진 사람들만 이 요청을 할 수 있다.**
        • ++ 보통은 ROLEADMIN 이런식으로 권한을 나눠주는데, Spring Security에서 이 메서드를 사용하면 자동으로 매개변수의 앞에 ‘ROLE’ 키워드를 붙여준다. 때문에 앞에 ‘ROLE_’을 붙이면 안 된다.
      • .hasRole(String) : 매개변수로 권한이름을 넣어준다. 딱 하나만 적는다. 해당 권한을 가지고 있는 사람들만 이 요청을 할 수 있다.
    • .anyRequest() : requestMatchers()에 적힌 path들을 제외하고 나머지 모든 경로에 대해서 다룬다.
      • .permitAll() : 아무런 권한이 없어도 전부 요청을 사용할 수 있다.
profile
생각날 때마다 기록하기

0개의 댓글