개발일기

오늘의 이슈 해결 - Spring Security

초롱불 2024. 5. 21. 23:58

오늘은 10시까지 야근을 했다. 화면단에서 POST 요청을 보냈는데 서버에서 아무 반응이 없는 부분을 해결하느라 시간이 걸렸다. 우선 우리 프로젝트의 개발환경은 front - nuxt, back - Spring boot로 이루어져 있었다. nuxt에서 스프링부트 서버로 요청을 보내면 컨트롤러에서 받는 형태의 스프링을 배웠다면 알기쉬운 직관적인 형태의 웹앱이었다. 심지어는 어느 정도 개발이 이루어진 상태였기에 많은 연결 사례 소스들이 있었고 이들중의 하나를 잘 카피하면 아무 문제 없이 연결이 되어야만 했다. 하지만 되질 않았다. 다른 POST 요청의 로직을 완전히 카피하다시피했는데도 서버에서는 아무 반응이 없어서 환장할 노릇이었다. 내가 생각해볼 수 있는 부분은 어딘가에 오타가 있거나 내가 카피해야하는데 빠뜨린 부분이 있거나 내가 알지 못하는 어떤 로직이 접근을 차단하는 경우로 생각해볼 수 있었다. 열심히 소스 사이를 뒤적거린 결과 내가 개발해야하는 기능과 다른 post 요청과의 결정적인 차이를 발견할 수 있었다. 그것은 다른 요청들은 로그인 이후에 수행한다는 점이고 내가 만들고 있던 기능은 로그인 이전에 수행한다는 점이었다. 나는 비밀번호 초기화 기능을 개발하고 있었다. 계정 아이디를 입력하면 휴대전화로 인증번호가 오고 인증번호와 함께 새 비밀번호를 입력하면 비밀번호가 변경되는 로직이었다. 그렇기에 로그인 전에 이루어져야 하는 기능이었다. 그런데 스프링 부트 및 nuxt에서는 로그인을 해서 세션에 권한을 지니고 있지 않은 사용자의 post 요청은 차단하는 로직이 존재했다. jwt 토큰이 있어야 한다든지 하는 security 관련 기능이었다. 1년 전에 스프링 시큐리티 공부를 하던 걸 더듬더듬 떠올려보면서 어떻게든 답을 찾아야 한다고 생각했다. 잘 찾으면 분명히 해당 차단 로직을 우회하는 방법이 있을 것으로 보였다. 개발자는 답에 가까워져 가는 기분에 행복을 찾을 수 있는 듯하다. 분명히 10시가 가까워져오고 있고 야근을 하고 있으니 스트레스 받을만도 한 상황이었는데 나는 답에 가까워지는 근거들을 하나씩 발견할 수 있어서 시간 가는 줄 모르고 집중하고 있었다. 프론트와 백에서 특정 url의 경우 예외로 지정하는 설정을 발견할 수 있었고 내가 요청을 원하는 url을 추가하였다. 프론트와 서버가 서로 반응하는 것을 확인하였고 뒤로 미루어놓았던 로직들을 정리하였다. 그렇게 1차적인 테스트까지 마친 시간이 10시였다. 그 후의 개발 부분은 단위 테스트와 함께 만들어나가도 될 부분들로 생각되었고 내일 계속하기로 하며 퇴근을 했다. 이러니 저러니해도 답을 찾아볼 수 있어서 좋은 경험이었다. 조금이나마 스프링에 대한 이해도도 높일 수 있었다. 다음에도 이런 야근의 기회가 온다면 환영하며 맞이하고 싶다.

'개발일기' 카테고리의 다른 글

평생 공부할 생각  (0) 2024.06.21
문서로 소통하는 것의 중요성  (0) 2024.06.20
실무에서 SQL튜닝을 처음 해본 후기  (0) 2024.05.14
올해 목표 자격증 정리  (0) 2024.05.10
나의 개발 기술 스택 정리  (0) 2024.03.24