(내일배움캠프) TIL(9) - 5주차: WebSecurityConfig

Thomas·2023년 6월 22일
0
post-thumbnail

어제 오늘 선발대 강의를 들으면서 스프링 숙련 강의에 없었던 WebSecurityConfig 부분에 대해서 많이 찾아보고 이해할려고 노력 했던거 같다!!

우선 아직 해결을 하지 못한

http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.class);

필터 우선순위 부분은 결국 이해를 하지 못해 튜터님을 찾아갔는데

튜터님도 설명을 못해주셔서 직접 구현을 해보시고 따로 연락을 주겠다는 답을 얻었다.

그래서 여기서 아직 이야기를 풀기에 부족함을 얻어 WebSecurityConfig 부분에 대해서 공부했던 부분을 설명 하기로 되었다.

http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() // resources 접근 허용 설정
                        .requestMatchers("/api/user/**").permitAll() // '/api/user/'로 시작하는 요청 모두 접근 허가
                        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );

여기 코드에서도 요청에 대한 권한 처리를 해주는 부분에서
맨 마지막에 있는 패스에 보안을 적용하기 위한 메소드를 설명을 하겠다.

위에 코드는 총 permitAll() 하고 authenicated() 메소드를 사용 하였다.

메소드동작
anoymous()익명 사용자의 접근 허용
authenticated()인증된 사용자의 접근을 허용
denyAll()무조건 접근을 허용하지 않음
hasAnyAuthority(String)사용자가 주어진 권한 중 어떤 것이라도 있다면 접근을 허용
hasAnyRole(String)사용자가 주어진 역할 중 어떤 것이라도 있다면 접근을 허용
hasAuthority(String)사용자가 주어진 권한이 있다면 접근을 허용
hasRole(String)사용자가 주어진 역할이 있다면 접근을 허용
permitAll()무조건 접근을 허용
rememberMe()기억하기를 통해 인증된 사용자의 접근을 허용

여기서 추가적으로 hasRole(String) 하고 hasAuthority(String)를 말하고 싶은데
hasRole(String) 인자 값으론 역할을 주어줘야하는데 보통 ROLEUSER 규칙으로 넣어주는게 맞지만 hasRole은 기본 내장으로 ROLE이 포함 되어 있어서 USER만 넣어주면 ROLEUSER으로 인식이 된다.
하지만 hasAuthority(String)은 인자값으로 권한자를 넣어줘야하는데 "ROLE
" 접두어를 넣어서 "ROLE_USER" 이런식으로 hasAuthority의 인자값에 넣어줘야 한다.

패스 보안에 대한 더 다양한 메소드를 보고 싶으면 참고자료를 통해서 보면 될거 같다!
참고자료: https://m.blog.naver.com/kimnx9006/220638156019

profile
Backend Programmer

0개의 댓글