- Today
- Total
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Kotlin
- Spring Security
- websocket
- 브랜치전략
- 리뷰
- infra
- 젠킨스
- spring
- 프로젝트
- EntityTransaction
- docker
- 후기
- jenkins
- JWT
- network
- SpringBoot
- chrome80
- Project
- redis
- JPA
- 캐싱전략
- Java
- container
- 팀네이버 공채
- SPRING JWT
- 책
- LazyInitialization
- 만들면서 배우는 클린 아키텍처
- 스프링
- 팀네이버
목록전체 글 (45)
PPAK
이전 게시글 에서 로컬 환경에서 SSL 인증서를 발급하고 https 를 적용해 보았습니다. 하지만 로컬에서 발급한 인증서는 공식적인 CA(Certificate Authority) 기관에 등록되어있지 않기 때문에 원격 서버에서 사용 시 브라우저에서 경고메세지와 함께 접근을 차단합니다. 따라서 CA 기관에 인증서 발급 요청을 하고 등록을 하는 과정이 필요합니다. 보통의 CA 기관은 일정 가격을 지불하고 복잡한 절차를 거쳐 인증서를 발급하지만 개인적인 토이 프로젝트를 진행하면서 비용을 지불하기란 쉽지 않습니다. 여기서 Let's Encrypt 라는 비영리 CA 기관은 https 의 확산에 기여하기 위해 무료로 SSL 인증서를 발급해주고 있습니다. 이번 프로젝트 에서는 Let's Encrypt SSL 인증서 발..
자바는 기본적으로 KeyStore 와 KeyStoreSpi 클래스를 활용하여 인증서를 관리하는 방식을 제공합니다. 해당 클래스에서 사용되는 파일을 생성하는 keytool 커맨드는 jdk 에서 기본적으로 제공합니다. (OpenSSL 과 비슷) 본 포스팅에서는 keytool 을 활용하여 인증서를 생성하고 https 통신을 적용해보려고 합니다. keytool -genkey -alias AN-keystore -storetype PKCS12 \ -keyalg RSA -keysize 2048 -keystore AN-keystore.p12 -validity 3650 -genkey: keytool 의 키 생성 -alias: keystore 별칭 -storetype: PKCS12, JKS 중 택 1 (자바에서는 Key ..
본 포스팅에서는 최근에 진행중인 프로젝트의 서버 설계, 구현 과정을 살펴보려고 합니다. 우선 api 서버를 구축하기 위해서 1. 인증/인가 2. JWT 사용(Authorization Header) 3. CORS 허용 등의 요구사항이 있었고 이를 적용하고 있는 방식을 설명하고자 합니다. 위 사진은 일반적인 Spring 서버의 요청 처리 구조를 나타내는 그림입니다. 저는 현재 기본 Spring Boot Application 에 1. Filter(Spring Security) 를 통해 인증/인가 2. Interceptor 를 통해 인가된 요청 헤더값 추출 3. Controller 에서 JWT 생성 및 발급을 수행하고 있습니다. Client 의 요청이 Filter -> Interceptor -> Controll..
기존에 스프링 시큐리티에 대해서 잠깐 공부하고 간단하게 실습해본 것이 전부인 상태에서 이번에 진행하는 프로젝트에 한번 적용을 해보려고 합니다. 기본적으로 스프링 시큐리티는 애플리케이션에서 인증/인가 에 대한 설정을 편리하게 도와주는 역할을 합니다. Controller 에서 인증 인가를 충분히 수행할 수 있지만 관심사의 분리 측면에서 역할이 확실히 구분됩니다. 1. Controller 는 사용자의 요청에 대한 서비스의 응답을 구성한다. 2. 인증과 인가는 Controller 까지 요청이 오지 않고도 충분히 수행할 수 있다. 따라서 Dispatcher Servelet 에 요청이 돌아오기 전에 인증과 인가를 수행하는 레이어를 스프링 시큐리티가 담당한다고 볼 수 있습니다. 위 사진은 전체적인 스프링 시큐리티의 ..
SQL 에서 서로 다른 테이블을 연관지어 불러오기 위해 사용되는 inner join 과 outer join 외에 JPA 의 JPQL 에서는 fetch join 을 제공합니다. 이전 포스팅 에서 확인했듯 JPA 는 영속화를 바탕으로 데이터베이스 테이블과 직접적으로 연결되는 엔티티 객체를 추적하고, 관리하는 방식을 채택하여 불필요한 쿼리 생성을 최소화 합니다. 대표적으로 Transaction 내의 쓰기 지연 방식과 지연 로딩을 예로 들 수 있는데 오늘은 지연 로딩 사용시 발생할 수 있는 N+1 문제와 이를 해결할 수 있는 방법인 Fetch Join(join fetch) 에 대해서 알아보려고 합니다. 지연 로딩(Lazy Loading) 은 실제 연관관계에 있는 엔티티들 중 하나를 조회하려고 했을 때, 데이터..