본문 바로가기

개발/Spring23

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.
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.
Spring Boot + Spring Security + H2 DataBase 써보기 Spring Boot + Spring Security를 사용하면서 데이터 베이스에 연결해서 사용하는 경우가 있다. 제일 간편하게 사용 가능한 H2를 사용해보자! build.gradle application.yml spring security configure 설정 Application 실행 후 http://localhost:8080/h2-console/로 접속하면 User Name : sa Password : 1234 application.yml에 설정한 값으로 입력한다 진입하면 우리가 익히 아는 화면이 아닌 다른 화면이 보이는 듯하다. 개발자 도구를 열어보면 어떤것이 'deny' 되었다는 것을 확인할 수 있다. 위의 configure 설정에 아래 문장을 추가해주자 재접속 성공이다. Spring Secu.. 2022. 12. 19.