
전체 글
![[Spring Security] 필터 체인](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Tk1z%2FbtrMJj6HZ07%2FyDMbT8KQ7ub4XCK2bQT8Dk%2Fimg.png)
[Spring Security] 필터 체인
보안이 적용된 웹 요청의 일반적인 처리 흐름 (1)에서 사용자가 보호된 리소스를 요청합니다. (2)에서 인증 관리자 역할을 하는 컴포넌트가 사용자의 크리덴셜(Credential)을 요청합니다. 사용자의 크리덴셜(Credential)이란 해당 사용자를 증명하기 위한 구체적인 수단을 의미합니다. 일반적으로는 사용자의 패스워드가 크리덴셜에 해당합니다. (3)에서 사용자는 인증 관리자에게 크리덴셜(Credential)을 제공합니다. (4)에서 인증 관리자는 크리덴셜 저장소에서 사용자의 크리덴셜을 조회합니다. (5)에서 인증 관리자는 사용자가 제공한 크리덴셜과 크리덴셜 저장소에 저장된 크리덴셜을 비교해 검증 작업을 수행합니다. (6) 유효한 크리덴셜이 아니라면 Exception을 throw합니다. (7) 유효한 ..
[Spring Security] HTTPS, Hashing, Cookie, Session, SQL Injection
HTTPS란? HTTPS는 Hyper Text Transfer Protocol Secure Socket layer의 약자이다. HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다. HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해 HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법이다. HTTP HTTP TCP IP 네트워크 인터페이스 HTTPS HTTP SSL or TLS TCP IP 네트워크 인터페이스 암호화 제 3자가 서버와 클라이언트가 주고받는 정보를 탈취할 수 없도록 하는 것이다. 이를 위해 서버와 클라이언트는 서로가 합의한 방법으로 데이터를 암호화하여 주고받는다. 따라서 중간에 제 3자에게 데이터가 탈취되더라도 그 내용을 알아볼 ..
![[Spring MVC] application.yml 프로파일 기능 사용법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIFIQr%2FbtrMd59hzE5%2FfXh33sb8RcRNaqp1l1BVz1%2Fimg.png)
[Spring MVC] application.yml 프로파일 기능 사용법
프로파일(Profile) 적용 및 실행 application-local.yml과 application-server.yml 프로파일 생성 로컬 환경에서 개발을 진행할 때는 기존 application.yml 파일에 이미 설정되어 있는 H2를 사용하고, 서버용 jar 파일을 빌드할 경우에는 빌드 전에 application.yml 파일에 기존의 H2 정보 대신에 서버에서 사용하는 DB 정보로 수정한 뒤에 빌드하면 된다. 하지만, Spring에서 제공하는 프로파일 기능을 사용하면 편리하게 빌드가 가능하다. application.yml 파일 외에 application-local.yml 파일과 application-server.yml 파일을 추가한다. (1) application.yml 파일은 주로 애플리케이션의 실..
![[Spring MVC] API 문서화 - Spring Rest Docs](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdn2g5z%2FbtrL8SHIhY3%2F9Ly1qEZyKsnF6iMuikot5K%2Fimg.png)
[Spring MVC] API 문서화 - Spring Rest Docs
API 문서화란? 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 하는 요청 정보(URI, request body, query parameter 등)를 문서로 정리하는 것을 의미한다. API 문서는 개발자가 요청 URL(또는 URI) 등의 API 정보를 직접 수기로 작성할 수도 있고, 애플리케이션 빌드를 통해 API 문서를 자동 생성할 수도 있다. Spring Rest Docs Spring Rest Docs는 REST API 문서를 자동으로 생성해 주는 Spring 하위 프로젝트이다. Spring Rest Docs를 사용한 API 문서화의 대표적인 장점은 테스트 케이스에서 전송하는 API 문서 정보와 Controller에서 구현한 Request Body, Response ..
[Spring MVC] 테스팅(Testing) - Mockito
Mock이란? 목업(Mock-up)은 실제 제품이 나오기 전에 내부적으로 사용하기 위한 모형(가짜) 제품을 의미한다. 단위 테스트나 슬라이스 테스트 등에 Mock 객체를 사용하는 것을 바로 Mocking이라고 한다. Mockito란? Mockito란 Mock 객체를 생성하고, 해당 Mock 객체가 진짜처럼 동작하게 하는 역할을 해주는 Spring Framework의 라이브러리이다. Mockito의 Mocking 기능을 이용해서 테스트하고자 하는 대상에서 다른 영역(다른 계층 또는 외부 통신이 필요한 서비스 등)을 단절시켜 오로지 테스트 대상에만 집중할 수 있다. Stubbing이란? Stubbing은 테스트를 위해서 Mock 객체가 항상 일정한 동작을 하도록 지정하는 것을 의미한다. MemberContr..
![[Spring MVC] 테스팅(Testing)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6cdpC%2FbtrLvCUIqIG%2F6jBIZUIeCyKulVbmNw03DK%2Fimg.png)
[Spring MVC] 테스팅(Testing)
작은 단위의 테스트로 미리미리 버그를 찾을 수 있기 때문에 애플리케이션의 덩치가 커진 상태에서 문제의 원인을 찾아내는 것보다 상대적으로 더 적은 시간 안에 문제를 찾아낼 가능성이 높다. Spring에서는 계층별로 테스트 할 수 있는 테스트 기법을 지원 해주고 있다. 단위 테스트(Unit Test)란? 기능 테스트는 주로 클라이언트 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트하는 것이다. 통합 테스트는 개발자가 테스트의 주체가 되는 것이 일반적이다. 클라이언트 툴 없이 테스트 코드를 실행시켜 이루어지는 경우가 많다. 슬라이스 테스트는 애플리케이션을 특정 계층으로 쪼개어 테스트하는 것을 의미한다. 단위 테스트는 비즈니스 로직에서 사용하는 메서드 단위로 테스트하는 것을 의미한다. 단위 ..
![[Spring MVC] 트랜잭션(Transaction)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgtZrR%2FbtrLwJskW5d%2FYh1gBP2PCICnh7ZZd8UQnK%2Fimg.png)
[Spring MVC] 트랜잭션(Transaction)
트랜잭션(Transaction)이란? 여러개의 작업을 그룹으로 묶는 것이다. 논리적으로 하나의 작업으로 인식해서 전부 성공하든가 전부 실패하든가의 둘 중 하나로만 처리되어야 한다. 이러한 All or Nothing이라는 트랜잭션 처리 방식은 애플리케이션에서 사용하는 데이터의 무결성을 보장하는 핵심적인 역할을 한다. 또한 트랜잭션은 애플리케이션의 핵심 로직 아닌 부가 기능이기 때문에 AOP의 적용 대상 중 하나라고 볼 수 있다. ACID 원칙 원자성(Atomicity) 트랜잭션에서의 원자성이란 작업을 더 이상 쪼갤 수 없음을 의미한다. 논리적으로 하나의 작업으로 인식하여 All or Noting 중 하나로만 처리되는 것이 보장되어야 한다. 일관성(Consistency) 트랜잭션이 에러없이 성공적으로 종료될..