main프로젝트 개인기술발표 대본

wish17·2023년 5월 24일
0

주어진 시간이 2분밖에 안돼서 생략된 내용이 너무 많습니다 ㅠㅡㅠ
위 이미지(링크)를 누르면 ppt 확인 가능

안녕하십니까. EduSync팀 백엔드 팀원 위원종입니다.


저는 화면에 보이는 것과 같이
배포와 member entity관련 기능과 Security를 담당해 구현했습니다. 즉, 사용자 관련 기능을 담당하여 기능들을 구현했고, 보안을 강화하기 위해 리프래쉬 토큰을 Redis에 저장해 서버에서 제어 가능하도록 하는 등 많은 내용을 구현하기보다 깊이있는 구현과 협업 과정을 더 중요시 하며 이번 프로젝트를 만들었습니다.

자세히 내용들을 하나씩 살펴보겠습니다.


Spring Data JPA를 이용해서 사용자 Member의 CRUD를 구현했고 회원가입과 마이페이지 수정이 가능하도록 했습니다.


Spring Security와 JWT를 이용해서 토큰인증 방식의 로그인 기능을 구현했고 OAuth2 로그인으로 구글, 카카오, 네이버를 연동했습니다.


OAuth2 로그인 연동을 구현하는 과정에서 처음에는 각 provider별로 제공해주는 api문서를 보며 직접 Controller를 만들어 인증과정을 처리했지만


후에 Spring Security를 이용해 간단하게 provider 설정을 추가해 주는 방식으로 코드량을 대폭 줄일 수 있었습니다.

그런데 이렇게 로그인 기능을 다 만들고 보니 의문점이 하나 생겼습니다.

일반적인 토큰인증 방식 즉, 서버의 부담을 최소화하기 위해서 토큰을 생성 후 클라이언트에 전달해주고 토큰 노출에 따른 위험부담을 모두 사용자가 갖도록 하는 인증처리과정은 너무나도 무책임한 방식이 아닐까?하는 생각이 들었습니다.

카드를 잃어버리면 잃어버린건 고객 잘못이긴 해도 카드사가 최소한 카드정지는 도와줄 수 있어야하지 않겠습니까?


그래서 엑세스 토큰의 유효시간을 5분으로 매우 짧게 설정하고,
서버에서 리프래쉬 토큰을 핸들링 할 수 있도록 redis에 저장하는 기능을 추가했습니다.


그리고 member 컨트롤러 계층에 한해서 테스트코드를 구현하고 RestDocs을 적용해 API 문서화를 했습니다.


서버를 배포하는 과정에서 처음에는 깃 클론을 이용해 배포했었지만 FTP프로그램을 이용해서 빌드된 파일을 드래그앤드롭으로 간편하게 옮길 수 있었고 쉘스크립트를 만들어놔서 배포하는데 소요되는 시간을 1~2분 정도로 줄일 수 있었습니다.



그리고 도메인 주소를 연결하고 https 설정을 하기 위해서 그림과 같은 형태로 연결해 보안을 더 향상시킬 수 있었습니다.


0개의 댓글