240625
오늘의 학습
● 프로젝트 컨셉
● 구현해야 할 기능 및 분배
● 패키지 구조
● API 명세서
● 트러블 슈팅
아웃소싱 프로젝트가 끝나고 난 회고
1. 프로젝트 컨셉
부트캠프 내에서 수강생 분들끼리 대화를 할 수 있는 커뮤니티 사이트
2. 구현해야 할 기능 및 분배
- 팀장
- 프로필 조회 및 수정
- 좋아요 기능(게시물 및 댓글 좋아요/ 좋아요 취소)
- 소셜 로그인 기능 구현
- 팀원 1
- 게시글 CRUD - 기능
- 팀원 2
- 댓글 CRUD - 기능
- 글쓴이(me)
- 사용자 인증 (회원가입/탈퇴, 로그인, 로그아웃)
3. 패키지 구조
아키텍처 패키지 구조로는 크게 2가지인 "계층형 방식"과 "도메인형" 방식을 생각을 했었고, 이번 프로젝트에는 도메인형 방식을 채택하여 패키지 구조를 짜게 되었습니다.
도메인형 특징
각각의 도메인 별로 분리가 가능하여 계층형 방식보다 직관적이라 관리하기가 쉽다는 장점이 존재하고 다소 패키지가 많아져 구조를 파악하기 힘들 수 있다는 단점이 있어 큰 사이즈의 프로젝트에 적합한 구조입니다.
도메인형을 선택한 이유
저희가 만드는 프로젝트는 사이즈가 작은 프로젝트임에도 불과하고 도메인형을 사용한 이유는 프로젝트를 구현하는 것이 목적이 아닌 학습을 중점으로 두었기에 사용해보지 못한 방식을 이용하고자 도메인형을 선택하게 되었습니다.
4. API 명세서
해당 API의 특징에서는 RESTful하게 API를 설계하고자 URL의 패스를 복수형으로 다루었습니다.
5. 트러블 슈팅
# 개인적으로 발생한 트러블 슈팅
RefreshToken DB조회에 대한 보안 문제
변경 전 ) 검증은 안하고 RefreshToken 토큰을 DB에 저장하는 로직
※ 문제점
검증을 안하고 리프레시 토큰을 이용해 바로 DB에 조회 할 때 해당 토큰에 대한 조회는 되어도 보안상 이슈가 존재한다. 중간에 토큰 탈취가 되었을 경우 해당 로직에는 검증에 대한 로직이 없기 때문에 탈취한 사용자가 해당 리프레시 토큰을 이용해 DB에 조회가 가능한 상황이 발생한다.
변경 후 ) 검증을 한 RefreshToken 토큰을 DB에 저장하는 로직
※ 해결
검증 단계 추가적으로 진행
- 중간에 토큰 탈취가 되어 해당 토큰을 악용할 경우에 대비해 검증 로직을 추가
- 검증이 완료된 토큰 내부의 user정보를 이용해 DB에 조회
- 검증을 통한 보안 문제 해결
회고
중간에 팀원들과의 깃허브에 대한 소통 때문에 시간을 많이 잡아먹어서 필수 구현기능인 CRUD와 로그인 기능 밖에 못했다는 부분이 너무 아쉽고, 개인적으로는 인증/인가 말고도 다른걸 할 수 있는 시간이 있었음에도 자신이 없어 도전을 못했다는 부분이 너무 아쉬웠다. 다음에 하면 기능 구현을 완성하지 못하더라도 무조건 도전할 예정이다.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 50일차 TIL - JDBC (0) | 2024.06.27 |
---|---|
내일배움캠프 49일차 TIL - Spring Security 필터 순서에 따른 인가 문제 (0) | 2024.06.26 |
내일배움캠프 42일차 TIL - 톰캣, 서블릿 (0) | 2024.06.17 |
내일배움캠프 41일차 TIL - Spring AOP (0) | 2024.06.14 |
내일배움캠프 40일차 TIL - Spring Test (0) | 2024.06.13 |