Spring 시큐리티
2023. 12. 15. 09:41ㆍ카테고리 없음
일단 jwt를 활용하려면 시큐리티는 필연적으로 다뤄야 한다.
둘다 보안을 담당하는 나쁜 친구들(어려움)
시큐리티는 이름에서 예상 가능하듯이 스프링 기반 앱의 보안을 담당한다.
주된 기능은 인증(Authentication), 권한 부여(Authorization)로 사용자를 인증하고, 인증된 사용자에 대해 권한을 부여하는데 사용된다.
기본적으로 세션,쿠키 방식으로 인증을 거치며 권한에 따른 접근결정을 내리는 기능인것이다.
각 필터의 종류와 기능은 다음과 같다!
UsernamePasswordAuthenticationFilter | 사용자의 아이디와 비밀번호를 사용하여 인증을 감시하고 시도하는 필터. |
BasicAuthenticationFilter | HTTP 기본 인증 헤더 감시및 처리하는 필터이다. |
AnonymousAuthenticationFilter | 이 필터가 사용될때 까지 사용자가 인증되지 않은 경우, 익명 사용자를 생성하는 필터이다. |
ExceptionTranslationFilter | 이 필터는 접근 거부 예외 (AccessDeniedException)와 인증예외(AuthenticationException)를 처리하고, 적절한 응답을 생성하는 필터이다 |
RequestCacheAwareFilter | 요청이 캐시된 정보를 사용하는 필터로, 인증이 필요한 페이지에서 로그인 후에 다시 이전 페이지로 이동할 수 있게 한다. |
SessionManagementFilter | 세션 관리를 담당하는 필터로 세션 트래킹을 처리하며 세션 공격에 대한 대비책을 수행한다. |
SecurityContextHolderAwareRequestFilter | SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 업데이트 기능을하는 필터이다 |
RememberMeAuthenticationFilter | Remember Me 기능을 지원하는 필터이다. |
또한 시큐리티를 사용하면 기본적으로 로그인 페이지를 지원하게 되는데 저번 프로젝트를 처음 진행할때,
api테스트를 하려 하였으나 postman이 작동하지 않아 이유를 살피려 localhost:8080으로 들어가보니
기본적인 로그인 페이지가 등장하여 내가 서큐리티를 해제하지 않았다는 사실을 발견할 수 있었다.
사실 이게 시큐리티가 만든 페이지인지 모르고 대체 프론트 페이지를 만든적이없는데 이건 어디서 튀어나온건지
깜짝 놀란건 비밀이다.
이러한 시큐리티는 Jwt와 결합되면 몇가지 추가적인 이점을 얻을 수 있다.
Spring Security와 JWT의 결합
- 토큰 기반 인증: 스프링 시큐리티와 JWT를 결합하면, 사용자 인증 후 서버가 JWT를 발급하고 이를 클라이언트에 전달하여 인증 정보를 유지할 수 있다.
- Stateless(무상태)한 서버: JWT를 사용하면 서버가 세션 상태를 유지하지 않고도 인증 정보를 검증할 수 있어, 서버의 확장성을 높일 수 있다.
- 분산 환경: JWT는 분산된 서비스 간에 토큰을 통해 인증 및 권한을 전달하는 데 유용하다.
다음엔 jwt를 같이 알아보자!