Dev/개발일지

Dev/개발일지

JWT 리프레시 토큰 적용하기

이 글은 JWT, 액세스 토큰, 리프레시 토큰 등에 대한 개념적 정리이다. 목차 1. 개선 이전 상황 2. 액세스 토큰, 리프레시 토큰 정리 3. 구현 내용 4. 자체적인 질문과 응답 1. 개선 이전 상황 나는 JWT를 통해 인증&인가 관련 기능을 구현하였었지만, 액세스 토큰과 리프레시 토큰을 구분하지 않고 만료시간이 일주일 정도로 긴 하나의 토큰만 사용중이였다. 이를 개선해 본다. 2. 액세스 토큰, 리프레시 토큰 정리 개선 이전의 내 방식은 어떤 문제가 있을까? 1. 토큰 만료일이 일주일로 매우 길다. 2. 토큰 탈취시 강제 만료시킬 방법이 없다. 사용자가 매번 로그인을 해야하는 불편함을 없애기 위해 만료시간을 길게 하였지만, 토큰을 탈취당하면 긴 시간동안 악의적 행동에 시달려야 하며, 만료일 전까지..

Dev/개발일지

서버에 HTTPS 적용하기

목차 1. HTTPS 란? 2. 내 서버 구조 3. HTTPS 적용 4. 작동 흐름 1. HTTPS 란? HTTP + SSL/TLS 프로토콜을 이용해 데이터를 암호화하는 통신 방식. 장점 1. 데이터 탈취 방지 HTTP는 보안에 취약하다. 신용카드나 주민번호와 같은 정보가 탈취당할수 있다. HTTPS는 데이터가 암호화 되기에 안전하다 2. 서버가 신뢰할수 있음을 보장 클라이언트 입장에서 통신할 서버를 믿을수 없다. 예를들어 클라이언트는 은행 웹사이트에 접속한줄 알았지만 피싱사이트일수도 있기 때문이다. CA가 발급한 SSL 인증서가 있는 서버(웹사이트)는 안전하다고 인증되었기에 신뢰할수 있다. 3. 검색 엔진 최적화 검색 엔진에 웹사이트가 노출될 확률을 높일수있다 2. 내 서버 구조 내 프로젝트 인프라는 ..

Dev/개발일지

테스트 코드 리팩토링 해보자

테스트 코드를 잘 써야한다. 서비스 장애를 사전에 방지하고, 품질 좋은 코드를 만들게 되며, 시간을 꽤 들여서 테스트 코드를 작성해도 결국 나중에는 그게 시간을 아끼도록 해주기 때문이다. 무엇보다 중요한건 그래야 면접관이 좋아한다. 그걸 나도 아는데, 솔직히 테스트 코드 쓰는 시간을 좋아한다고는 못말하겠다... 그래도 개판인 내 테스트코드를 개선하는 시간을 가져본다... 솔직한 내 현재 상황: 1. 테스트 클래스 통째로 주석처리함 요구사항 빨리 개발해서 쳐내다가 너무 많이 기능이 추가되고 기획이 수정되서 일부 테스트 통과 안되서 걍 편하게 ctrl + A -> ctrl + ? 눌러버림 마지막 양심으로 postman 보면서 수작업 테스팅함 2. 근거없이 오직 @SpringBootTest 통한 통합 테스트만..

Dev/개발일지

DB 구조 변경과 데이터 옮기기

테이블 구조를 변경하였다. 이미 저장된 데이터를 유지하면서 변경된 데이터를 옮기는 작업을 했다. 왜 바꿨냐면, 제3정규화를 위반하여 중복되는 데이터가 많을것으로 생각했기 때문이다. book 테이블은 회원이 고유하게 소유하는 책이다. 책 isbn, name 같은 정보 저장 말고도, 다 읽은, 읽는 중, 읽고싶은 등의 정보를 저장하고, 기획상 book이 post를 여러개 갖고 있어서 회원의 post들 테이블에 접근할때 처음 구분을 해주는 역할을 해준다. 구조 변경 전에 처음 설계할때는 사실 중복될것을 몰랐던건 아닌데, 같은 책 정보 몇개 들어온다고 크게 문제될까? 라고 생각했다. 어차피 별로 중복이 많을것같진 않은데 구조가 복잡해지는게 싫었다. 그런데 개발중에 쌓인 테스트 데이터를 보면서 생각해보니, 사실 ..

Dev/개발일지

AWS beanstalk에서 RDS 사용하려고 삽질

beanstalk을 쓰면 업데이트 할때마다 구성요소를 갈아 치운다. 그래서 따로 돌아가는 RDS를 beanstalk으로 생성한 ec2와 직접 연결해줘야한다. 민감한 정보(db/aws configuration)를 깃헙에 그냥 올리면 안되니까, beanstalk 쓰기 전처럼 그냥 ssh 접속해서 인스턴스에 application.yml을 프로파일 구분해서 만들면 되지 않을까? 하고 생각없이 작업하고있었는데, 이 글 맨위에 적어놓은게 생각났다 아 근데 이거 어차피 다 날리는데...? 다른 방법을 찾아봐야했다. 좀 보다보니까 구글에 찾아봐도 잘 나오고, 공식문서에도 나와있다 https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/java-rds.html Ama..

Dev/개발일지

스프링 데이터 JPA, Query DSL 완강

했다 3월 초에 시작해서 꽤 많이 왔다... 힘들었다... 뿌-듯

Dev/개발일지

실전! 스프링 부트와 JPA 활용 1,2 완강

재미있고 생각보다 할만했는데 진짜 길고 힘들었다... 복습하고 블로그에 올려야지

Dev/개발일지

자바 ORM 표준 JPA 프로그래밍 완강

김영한님의 JPA 인강을 드디어 다 들었다. 17시간 짜리 강의이고, 강의 내용도 쉽지않아서 힘들었다. 사실 난이도 자체가 너무 어렵고 이해가 죽어도 안된다는 느낌은 아니였고, 강의에서 안다고 전제하고 설명하는 것들, 초반부에 알려주고 제대로 복습이 안된것들에 대해서 슉슉 지나가는 느낌이여서 힘들었다. DB설계와 SQL에 관한 내용들이 특히 알쏭달쏭했다. 하지만 이 강의를 듣기 잘했다고 생각하는게, 이렇게 내가 뭘 모르는지 아는 상태가 되는것이 너무너무 필요했기 때문이다. 이제부터 강의를 쭉 복습해서 블로그에 정리하고, 남은 강의들을 빨리 듣고나서 토이 프로젝트를 얼른 해보고싶다.

ChoiBulldog
'Dev/개발일지' 카테고리의 글 목록