본문 바로가기

분류 전체보기102

Spring Security 구성과 흐름 해당 게시글은 Spring Security의 이해를 위해서 작성했다. Spring Security INTERNAL FLOW Spring Security Filter : 사용자 측에서 보내는 request들을 확인하여 인증이 필요 여부를 확인한다. 필요하다면 login page로 보내거나 저장 되어있는 정보를 확인한다. Authentication : UsernamePasswordAuthenticationFilter가 http로 부터 username, password를 추출하며 Authentication 타입의 객체를 준비한다. AuthenticationManger : 사용가능한 AuthenticationProviders를 관리하며 책임진다. AuthenticationProvider : 인증 비즈니스 로직들.. 2023. 1. 2.
2022년 회고 그리고 다가올 2023은? GOOD BYE 2022 2022년의 가장 큰 변화는 역시 퇴사가 아닐까 싶다. 2021년 여름에 입사하고 2022.11월에 첫 회사를 퇴사하게 되었다. 담당하고 있던 프로젝트에 추가로 큰 프로젝트에 투입 된 해였다. 각 파트의 사람들 그리고 기능별 담당자들과 회의를 통해서 결정하고 개발을 진행할 수 있는 기회를 얻어서 나름 기뻣던 프로젝트다. 하지만 프로젝트를 진행하면서 스스로에게 깊은 고민이 시작된 계기이기도 했다. 내가 코드를 짜고 있는건지 아니면 복사 붙여넣기만 하고 기능을 구현한건지 의구심이 들기 시작했다. 설상가설로 담당하고 있었던 프로젝트의 개선 작업을 진행하지 못하게 된것이다. 3개월 정도의 준비 기간과 지원 프로젝트가 끝나면서 겨우 시작할 수 있었을 작업이지만 아쉽게도 담당에서 벗어나게 .. 2023. 1. 1.
Spring Security 기본 정리 기본적으로 인증 인가를 담당하는 프레임 워크이다. 인증 (Authenticate, 누구인지) 인가 (Authorize, 어떤것을 할 수 있는지?)를 담당해준다. 그럼 우리가 Spring Security안에서 자주 확인하는 단어들을 확인해보자. Principal (접근 주체) : 보호된 리소스에 접근하는 대상 Authentication (인증) : 보호된 리소스에 접근한 대상에 대해 누구인지, 애플리케이션의 작업을 수행해도 되는지 확인 Authorize (인가) : 해당 리소스에 대한 접근 권한을 가지고 있는지 확인 권한 : 접근 제한, 모든 리소스는 접근 제한이 존재한다. 이 과정에서 해당 리소스에 대한 제한된 최소 권한을 가졌는지 확인 인증관리자 (Authentication Manager)와 접근 결정.. 2022. 12. 30.
Spring Security - Filter, OncePerRequestFilter 정리해보자 Filter | OncePerRequestFilter 가볍게 필터가 어떻게 동작하는지 그림을 통해서 확인해보자 그럼 흔히 중간에서 우리의 동작들을 제어해주는 FIlter, Interceptor의 차이를 확인해보자 우선 Filter은 DispatchServlet 앞에서 동작하는 큰 문이고, Interceptor은 DispatchServlet과 Controller 사이에서 동작하는 작은 문이다. 필터 Web Application Context의 기능 인코딩, Cors, Log, 인증, 권한 등을 구현 인터셉터 스프링의 Spring Context의 기능 Bean같은 느낌 스프링 컨테이너로 다른 빈을 주입하여 사용하기 용이하다. 다른 빈을 활용하여 인증, 권한 등을 구현 할 수 있다. 프로젝트를 진행하면서 Fi.. 2022. 12. 30.
Spring Boot + JPA + H2 로컬에서 개발을 진행할때 데이터베이스에 임시로 데이터를 넣고 진행해야하는 상황이 자주 발생한다. Spring Application 실행 시 자동으로 기초 데이터를 넣을 수 있게 data.sql을 작성해서 넣어보자 Gradle Entity: 일반적으로 실행시 발생하는 에러이다. TB_USER이 생성 되기 전에 data.sql의 insert 문장이 실행 된것 같다 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes GitHub - spring-projects/spring-boot: Spring Boot Spring Boot. Contribute to spring-projects/spring-boot developm.. 2022. 12. 26.
HttpSecurity 설정 정리 Security 설정을 하면서 쓰는 설정 값들을 정리해본다. http authorizeRequests : 시큐리티 처리에 HttpServletRequest를 이용한다. antMatchers : 특정 경로 지정. permitAll : 모든 사용자 접근 가능. hasRole : 특정 권한을 가진 사람만이 접근할 수 있음. formLogin : form 태그 기반의 로그인을 지원하는 설정 sessionManagement : 세션 정책 설정 maximumSession(1) : 같은 아이디로 1명만 접속하도록 설정 maxSessionPreventLogin(false) : 기존 사용자가 접속했고 새로 접속하는 사용자가 있을 경우 기존 사용자는 접속을 끊고 새로 들어오는 사용자를 받는다. 2022. 12. 20.