Web

    Filter와 OncePerRequestFilter

    Filter와 GenericFilterBean Filter는 javax.servlet-api나 tomcat-embed-core를 사용하면 제공되는 Servlet Filter 인터페이스입니다. Filter는 서블릿이 실행되기 전, 후로 호출됩니다. 이 Filter 인터페이스를 조금 더 확장하여 스프링에서 제공하는 필터가 바로 GenericFilterBean 입니다. GenericFilterBean 추상 클래스는 Filter 인터페이스를 상속받고 있는데 이외에도 Spring의 설정 정보를 가져오고 세팅할 수 있도록 확장된 추상 클래스입니다. (ServletContext를 get,set 하는 등..) Filter 인터페이스 외에도 여러 인터페이스들을 구현하고 있지요? public abstract class G..

    JWT (JSON Web Token) 이해와 구조

    JWT (JSON Web Token) 이해와 구조

    이번 글에서는 JWT 구조와 간단한 알고리즘 설명, 마지막으로 JWT 생성 과정에 대해 설명할 예정입니다. JWT 홈페이지를 참고하였고 추가 설명을 작성하였습니다. JWT(JSON WEB TOKEN)는 쿠키와 세션 방식을 거치는 과정 속에서 나타난 하나의 인터넷 인증 표준 포맷입니다. 말 그대로 인증에 필요한 정보(JSON 객체)들을 토큰에 담아 전송하는 방식입니다. JSON 객체란? "속성-값" 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 이 정보는 디지털 서명이 되어있기 때문에 안전하게 인증을 시도할 수 있습니다. (서명에 쓰이는 알고리즘은 HMAC 알고리즘,RSA(공개 / 개인 키 쌍 사용) 등의 알고리즘이 있습니다.)..

    Spring MVC Request Lifecycle

    Spring MVC Request Lifecycle

    이번 글에서는 Spring MVC 라이프 사이클에 대해 이야기해보고자 합니다.라이프 사이클이 저에게는 복잡하기도 하고 이번 글도 이해하는 과정 중에 작성하는 글이므로 잘못된 부분은 일러주시면 감사하겠습니다 :^)  Spring MBC의 요청 Life Cycle에 대해 다루기 전에 Servlet과 Servlet Container에 대해 알아보겠습니다. ServletServlet이라는 기술은 웹 서버의 성능을 향상시키기 위해 사용되는 Java 클래스의 일종입니다.일반적으로 Java 기반의 웹 애플리케이션을 만들기 위해 사용되고, 웹 서버에서는 다양한 요청을 처리하기 위해서 굉장히 많은 low level 기술이 필요한데, 이때 서블릿을 이용한다고 볼 수 있습니다.그래서 좁은 의미로는 서블릿을 (자바 기반의) ..

    단위 테스트 코드 작성 (JUnit5)

    단위 테스트 코드 작성 (JUnit5)

    단위 테스트는 우리가 코드를 작성하는 방식에 이미 녹아있는 것이지 별도의 작업이 아니다. 테스트하지 않았다면 코드 작성을 완료했다고 할 수 없다. 단위 테스트는 코드가 제대로 구현되었는지 확인하는 가장 좋은 방법이다. - 도서 '소프트웨어 장인' 中 - 오늘은 필자가 현재 진행 중인 프로젝트에서 구현한 방문 가게의 리뷰글을 CRUD하는 기능에 대한 몇 가지 테스트 코드를 작성하는 겸 기록해놓기 위해 이 포스팅을 시작합니다. 테스트는 Repository, Service에 대한 단위 테스트(Unit Test)를 진행할 것이고 중점을 둔 부분은 "의존성을 최대한 줄였는가?" 입니다. Unit Test는 말그대로 단위 테스트이므로 @SpringBootTest 어노테이션을 통해 스프링을 실행시키지 않을 것이고, ..

    Spring Boot와 S3 연결하기

    Spring Boot와 S3 연결하기

    현재 개발중인 서비스에서 이미지를 업로드하는 기능을 구현하기로 했고, 업로드된 파일은 AWS의 S3 버킷에 업로드하기로 결정했다. 아래 단계로 진행한다. 1. S3의 버킷을 생성하고 정책을 설정한 후 2. S3 버킷에 접근할 수 있는 IAM 사용자를 생성하고, 3. Spring Boot에서 S3 관련 의존성과 사용자 정보(access key, secret key)를 추가한다. 4. 업로드, 수정, 삭제하는 기능을 구현한다. 이번 글에서는 3번까지 진행하는 과정을 적어보려한다. 1. s3 버킷 생성 이 단계에서 주의하여 체크할 것은 세가지이다. 1. ACL (액세스 제어 목록) 을 활성화시켜준다. 2. 퍼블릭 엑세스 차단을 해제한다. 3. 권한 > 정책 설정 버킷을 생성하고 나면, 버킷의 권한에 들어가서 ..

    인증과 인가 (쿠키, 세션, 토큰)

    인증과 인가 (쿠키, 세션, 토큰)

    이번 포스팅에서는 인증과 인가, 그리고 인증하는 방식의 변화에 대해 다룰 것입니다. ➰ 용어 정리 인증이란, 서비스에 등록된 유저의 신원을 입증하는 과정입니다. 가장 대표적인 예로 로그인이 있습니다. 서비스에 회원가입한 유저가 로그인을 요청하면, DB에 저장된 유저 정보와 대조한 후 신원을 입증합니다. 인가란, 권한에 대한 허가입니다. 즉, 인증 절차를 통해 인증된 사용자가 자원에 접근하려고 요청했을 때, 자원에 접근할 수 있는 권한인지 확인하는 과정입니다. 로그인을 한 유저가 게시판에 글을 쓰려하거나, 글을 삭제/수정하려할 때 인가 과정을 거치게 됩니다. 🏢 웹에서의 인증과 인가 웹에서는 클라이언트와 서버는 Http를 이용해서 통신을 합니다. 웹에서의 인증과 인가 방법은 쿠키(Cookie)를 이용하여 ..