2022.06.07일 첫 작업을 시작으로 약 3주 정도 걸린 SSO 구현이 1차 완료되었다.
프로젝트 작업에 들어가기 전 인프런에 있는
정은구 강사님의 Spring Boot JWT Tutorial 을 학습하고,
각 종 구글링을 통해 R&D를 일주일 간 진행하였지만 방향성에 대한 확립을 하지 못했고
구현에 대한 확신이 없었다.
프로젝트 세팅
- JAVA 11
- thymeleaf
- Mabatis 2.0.6
- Mysql
- JAVA_jwt 3.10.2
로 진행하였다.
기본적인 코드는 강의에서 본 코드를 바탕으로 최대한 세팅하여 진행을 하였지만,
가장 큰 문제는 이 프로젝트에서 원하는 쓰임새대로 커스텀으로 진행을 하는 문제였다.
강의,또는 자료 들에서 구현되었던 JWT는 같은 프로젝트 내에서 JWT토큰을 이용한 로그인 구현이였는데,
우리 프로젝트에서 원하는 방향은 JWT를 이용한 SSO 로그인이였다.
즉, GIMS 를 비롯한 앞으로 구현되어야 할 여러 프로젝트들에서 공통으로 쓸 로그인에 대한 구현이였고 한번 로그인을 진행을 한 후 다른 프로젝트 진입 시 로그인이 유지되어야 하는 기능이 가장 우선적이였다.
그리고 가장 큰 차이는 우리 프로젝트에선 로그인에 대한 회원 데이터를 연결되어있는 데이터베이스가 아닌
다우오피스에서 조회를 하여 처리를 해줘야 하는 문제였다.
하지만 다우오피스에 대한 계약이 완료 되지 않았고, 그거에 대한 API 자료가 없는 상황이라서
임의로 회원데이터를 조회할 수 있는 API 를 구현하여 SSO 프로젝트를 구현했어야 됐다.
일단 제일 먼저 임의로 회원 데이터를 세팅 후 그걸 조회하는 API를 만들어 다른 port 로 띄운 후,
SSO 구현을 시작했다.
SSO 구현의 첫 시작은 강의로 구현을 해봤던 코드를 바탕으로 기본 베이스 코드를 작성하였다.
그치만 이 과정에서 평소 사용해보지 않았던 스프링 시큐리티가 문제가 되었고, 그 과정에서 또 하나의 학습과제가 발생하게 되었다.
한 발자국 전진을 할려면 두 발자국 뒤로 후퇴를 하여 공부를 해야되는 상황이 되니 정신적인 스트레스를 꽤 받게 되었다.
하지만 이건 개인 프로젝트가 아닌 회사 업무의 일환으로 일단 스프링 시큐리티 학습은 추후의 하기로 하고 간단히 문제만 해결 한 뒤 계속 프로젝트를 진행하였는데, 여기서 두번째 문제가 발생하게 되었다.
두번째 문제는 로그인 후 다시 원래 요청했던 페이지로 Redirect 에 대한 어려움이였다.
로그인 처리가 이뤄지는 서버에서 로그인을 처리한 뒤 다시 Redirect 을 해줘야 되는 상황에서 많이 해매게 되었고,
일단 GET으로 처리를 진행하여 조치할 수 있었다.
이 GET으로 처리한 부분에 대해서도 추후 리팩토링을 해야 될 거 같다는 생각을 남긴 채 진행을 계속 하였고 , 로그인을 성공하고 로그아웃까지 성공하게 되었다.
프로젝트의 1차적인 성공을 하였지만, 리팩토링에 대한 부분은 엄청난 숙제로 남게 되었다.
학습이 필요한 부분이 많이 생겼고, 리팩토링을 진행해야 되는 부분은 많이 쌓였다.
하지만 회사에는 SSO를 경험한 개발자가 없어 맞는 방향이고 올바른 코드인지에 대한 피드백이 없어
그 부분은 스스로 답답함을 계속 가지고 있다.
그래도 거의 혼자 만든 프로젝트라 나름 애착도 있고, 1차 적인 구현이 되었다는 점은
스스로도 뿌듯하게 생각하고 있다.
물론 부족함이 많고 앞으로도 해야되고 진행해야 될 부분은 점점 쌓이고 있지만 그만큼 나아가고
성장하고 있다는 점은 조금은 나 자신에게 칭찬을 해주고 싶다.
댓글