[후즈북 프로젝트] Oauth2 트러블 슈팅 경험

한주영·2023년 10월 31일
0

프로젝트

목록 보기
1/1

코드스테이츠 백엔드 부트캠프를 수료한지 벌써2달가까이지나갔다
그동안 알고리즘,CS등 다른 부분들을 건드리느라
프로젝트 리팩토링 , 블로깅을 하지못했었는데
지금이라도 해보려고 한다..!

메인프로젝트에서 인증,보안부분을 맡은 나는 JWT,Oauth2로그인 부분을 맡게되었다.

특히 Oauth2구현을 하면서 이슈가 많이생겼었는데
해당 트러블 슈팅에대한 경험을 적어보자 한다.

우선 Oauth의 개념에 대해 살펴보자면..!

Oauth2는 인터넷사용자들이 비밀번호를 제공하지않고 다른 웹사이트상의 자신들의 정보에대해 웹사이트나 애플리케이션의 접근권한을 부여할수있는 공통수단으로서 사용되는 개방형 표준이다.

당시 기능 욕심에 많았던 필자는 flowchart를 생각하지않고
기능 구현에만 집중되있어 프론트와 백엔드간의 데이터통신이 어떻게 일어나는지에대한 깊은 고민을 하지 못했다.
그렇기에 프론트분과도 갈등이생겼었지만, 잘 해결되었고 해당이슈를 해결하기위해 나름의 차트를 그려보았다

아래는 CSR방식의 워크 플로우이다.

CSR방식의 WorkFolow

1)첫번째로 문제되었던 부분은

URI를 전달하는 부분이었다.

JWT 토크나이저에서 액세스,리프레시 토큰을 발급받고 해당URI를 클라이언트로 전달하는 과정에서 해당권한을 만들어주는 emaile데이터가 아닌
문자열 데이터로 넘어갔기때문이었다..!

위코드는 DB에서 쿼리메서드로 회원을 불러온후 해당 데이터가존재할경우 로그인이 처리되는 코드이다. 엑세스 토큰을 불러오는 과정에서 토큰 생성에 문제가 있었던것이다

2)두번째로 문제되었던 부분은
플로우차트를 보면 구글에서 가져온 이메일,프로필이미지,닉네임 데이터가DB에 없을 경우 회원가입 페이지(클라이언트)에 전달을 해준다.

여기서 구글 닉네임이 영어인경우에는 잘넘어갔지만

닉네임이 한글일경우 exception이 발생했었다.

위코드는 DB에서 회원을 불러온후 해당 데이터가존재하지않을시 구글계정으로 가입하기 위해 회원가입 페이지로 넘겨주는 코드이다

닉네임데이터를 넘겨줄때 URLEncoder.encode를 이용해서 데이터를 받아오니 해당 이슈가 사라졌다.

단순한 이유같지만 이렇게 데이터통신의흐름을 잘 모를경우에는
해당이슈를 해결하기가 매우 복잡했을거같다..!

마지막으로 해당 트러블슈팅을 통해 느낀점은

1) 기능구현 전에 흐름을 먼저파악하자

2) 기능 구현에 필요한 기술은 먼저 기본을 공부하자

당시에는 깃헙 액션으로 자동배포를 한후에
로컬,ngrok,배포서버에서 돌아가면서 테스트를 해야했기때문에
구글에서 리다이렉션되는 URI를 매번 바꿔주어야해서
디버깅하는데 좀더 시간이걸렸던거같다

해당 경험을 통해서 Oauth2를 좀더 깊게 학습할수있었고
개발자로써 필요한 역량에대해 더 배운거같다는 느낌이다

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글