[Spring] Spring Container, Spring Bean, Bean Scope
·
Spring
스프링 IoC 컨테이너 IoC = Inversion of Control = 제어의 역전 객체의 생성과 관리 (Control)에 대한 책임을 개발자에서 스프링 컨테이너로 넘기는 것스프링 컨테이너는 빈 (Bean)의 생명주기를 관리하며, 생성된 빈에게 추가적인 기능을 제공하는 것이다. BeanFactory스프링 IoC 컨테이너의 가장 기본적인 인터페이스로, 빈 (Bean)을 관리 ApplicationContextBeanFactory를 상속받은 BeanFactory의 확장 버전XML 설정 파일을 사용하여 빈 정의 및 의존성 설정@Configuratrion 어노테이션이 적용된 Java class를 설정 파일로 사용@Bean -> 빈 정의@Autowired -> 의존성 주입@ComponentScan을 활용하여 자..
[Spring] Spring Security에서 csrf.disable() 해도 되는 이유?
·
Spring
들어가며정처기 공부를 하던 중 CSRF 개념을 접하게 되었고, 예전에 오타쿠맵 프로젝트에서 로그인을 구현하면서 spring security에서 csrf().disable()을 했던 기억이 떠올랐다. CSRF란?웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격이다.당시에는 기능 구현이 우선이라 여러 블로그에서 본 것처럼 csrf().disable()을 그대로 따라 했었다. 그런데 이번에 CSRF 공격을 자세히 공부하다 보니 이런 취약점이 존재하는데 정말 비활성화해도 되는 걸까?하는 의문이 생겼다.그래서 이번 기회에 CSRF가 무엇인지, 언제 비활성화해도 되는 이유에 대해 정리해 ..
[Spring + Redis] Redis를 활용하여 RefreshToken 발급과 AccessToken 재발급
·
Spring
본 포스트는 이전 Spring Security를 이용한 로그인 구현에 이어서 RefreshToken으로 AccessToken을 재발급하는 과정에 대해 정리해 보려고 한다.  JWT의 종류Access Token 클라이언트가 갖고 있는 실제로 유저의 정보가 담긴 토큰으로, 클라이언트에서 요청이 오면 서버에서 해당 토큰에 있는 정보를 활용하여 사용자 정보에 맞게 응답을 진행한다.Refresh TokenRefresh Token은 유효 기간이 짧은 Access Token을 재발급하기 위해 사용되는 토큰이다. JWT 보안 문제 및 Refresh Token의 필요성Access Token은 발급된 이후 서버에 저장되지 않고 클라이언트에 저장되어 사용자 권한 인증을 진행하기 때문에, AccessToken이 탈취되면 토큰..
[Spring] Spring Security를 이용한 로그인 구현 (스프링부트 3.X 버전)
·
Spring
이번에 UMC 7기 프로젝트를 진행하며 로그인 구현을 맡았다. Spring Security와 JWT(Json Web Token)를 활용하여 회원 로그인 기능을 구현해 볼 것이다. Spring Security에 대한 기본 개념은 아래 글에 포스팅해두었다.https://starmk.tistory.com/21 [Spring] Spring Security란?※ 이 글은 UMC 워크북을 진행하면서 학습한 내용을 정리한 글입니다. 일부 내용을 인용하였으며, 문제가 될 시 인용 부분을 수정 또는 삭제하겠습니다.Spring Security란?Spring Security는 Spring 기반 애starmk.tistory.com 사전 세팅build.gradle// Spring Securityimplementation 'or..
[Spring] Spring Boot에서 AWS S3에 사진 업로드/삭제
·
Spring
AWS S3 설정1. 버킷 생성아래 글에서 다루고 있습니다.https://starmk.tistory.com/22 [AWS] AWS S3 퍼블릭 버킷 생성하기1. 리전이 서울인 걸 확인하고 버킷 이름을 설정한다.버킷 이름이 좀 그렇지만 무시하자(S3 버킷 이름은 AWS 내 전역적으로 고유하다고 한다....) 2. 퍼블릭 엑세스를 허용해 준다.나머지는 기본 설starmk.tistory.com 2. 사용자 생성1) AWS S3에 대한 권한이 있는 IAM 사용자를 만든다.2) 직접 정책 연결을 클릭하고, AmozonS3FullAccess를 선택한다. 3. 엑세스 키 생성1) 보안 자격 증명 탭에서 엑세스 키를 발급한다. 2) Spring boot는 AWS 외부에서 실행되기 때문에 다음과 같이 선택한다. 3) 태..
[Spring] Spring Security란?
·
Spring
※ 이 글은 UMC 워크북을 진행하면서 학습한 내용을 정리한 글입니다. 일부 내용을 인용하였으며, 문제가 될 시 인용 부분을 수정 또는 삭제하겠습니다.Spring Security란?Spring Security는 Spring 기반 애플리케이션의 보안(인증과 권한)을 담당하는 프레임워크이다.Spring Security는 주로 다음 역할들을 수행한다.해당 사용자가 본인이 맞는지를 확인하는 절차(인증, Authentication)인증된 사용자가 요청된 자원에 접근가능한지를 결정하는 절차(인가, Authorization)위험한 상황으로부터 보호(다양한 보안 위협 방어)인증(Authentication)인증은 "당신이 누구인지 증명하세요"라고 묻는 과정이다.사용자가 제공한 credential(보통 아이디와 비밀번호)..
[Spring] Redis를 활용하여 게시글 조회수 구현
·
Spring
들어가며게시글 프로젝트를 진행하며 조회수를 어떤 방식으로 구현할지 고민이 들었다. 내가 생각한 로직은 다음과 같은데,사용자가 게시글을 조회할 때 조회수가 +1 된다.사용자마다 24시간에 한 번 조회수 +1이 가능해야 한다.게시글의 조회수는 Redis에 저장 후, 자정에 DB에 반영된다. 이를 위해선 세션, 쿠키 등 다양한 방법이 있지만 Redis를 사용하여 구현하기로 결정했다.조회수가 변경될 때마다 즉시 DB에 반영하지 않고, Redis에 임시로 저장한 후에 일정 시간에 한 번씩 DB에 반영함으로써 DB의 I/O 부담을 줄이고자 한다. 전체적인 코드는 이 글을 참고하여 구현하였다. Redis 설정Redis 설치는 다음 글을 참고하였다. [REDIS] 📚 Window10 환경에 Redis 설치 & 설정R..