dnd-side-project / dnd-5th-10-backend

IT 면접 지식 공유 플랫폼 IT'erview Backend-repo
4 stars 0 forks source link

[#3] OAuth2 + JWT 로그인 #6

Closed RulLu16 closed 3 years ago

RulLu16 commented 3 years ago

완성된 것은 아니고, 일단 현재 로그인 정보 확인해서 jwt 토큰 발행하고 검증하는 filter만 구현된 상태입니다.

jwt 필터 없이 customOauth2userservice만으로도 jwt 변환이 될거같긴한데.. 찾아보니까 리액트에서 oauth2로 로그인 하는 방법도 있어서 만약 그 방법으로 프론트가 로그인 하고 이후 얻은 유저 정보를 서버 측으로 /login으로 보내면 jwt 토큰을 발행하는 방법도 사용할 수 있을거같아요.

문제는, 이걸 전부 서버 측에서 할 경우 oauth2랑 연동을 어떻게 시켜야 할지 지금 감이 안 오네요 ㅠㅠ 제가 생각했던 로직은 oauth2로 로그인 하면, resource 서버 측에서 access token을 주고 이걸로 유저 정보를 얻은 후에 db랑 비교해서 정보 저장하거나 업데이트 하고 jwt 토큰을 발행하는 로직이었습니다.

이걸 그냥 만드는거면 모르겠는데, security 내부에서 연동하려니까 뇌정지...가 와서 막힌 상태입니다..

상현님이 제가 무엇을 하고 있는지 답답하실거 같고, 제가 혼자 하기가 힘들거같아서 한눈에 보기 편하도록 우선 pr 올려요..

저도 여기서 어떻게 연동할 지 조금만 더 찾아보겠습니다.. ㅠㅠ! https://minholee93.tistory.com/entry/Spring-Security-Google-Login-with-Spring-Security-JWT-2?category=924032 https://github.com/boyd-dev/SimpleSpringBoot https://github.com/codingspecialist/Springboot-JWT-React-OAuth2.0-Eazy

d36choi commented 3 years ago

넵 멋지십니다 멘붕올땐 좀 쉬었다 하세여. ㅋㅋㅎ 커밋 계속 보고있었습니다

RulLu16 commented 3 years ago

넵 멋지십니다 멘붕올땐 좀 쉬었다 하세여. ㅋㅋㅎ 커밋 계속 보고있었습니다

넵 ㅠㅠ 밥먹고.. 산뜻한 마음으로 다시 봐야겠어욬ㅋㅋ 상현님 혹시 구현하시면 코드 정독하겠습니다..

d36choi commented 3 years ago

아니면 문제되는 부분 페어프로그래밍하셔도 되구요..

RulLu16 commented 3 years ago

네네 좋습니다! 목요일에 한번 이야기해봐용

RulLu16 commented 3 years ago

/oauth2/authorization/google or github 로 가면 해당 로그인 창으로 이동 -> 로그인하면, security가 얻어진 access token 바탕으로 유저 정보를 얻음. -> customOAuth2UserService 동작. 얻은 유저 정보 바탕으로 db 탐색. 없으면 추가 or 업데이트 후 OAuth2User를 security에 담기 -> 성공하면, customOAuth2SuccessHandler 동작. db 유저 정보를 바탕으로 jwt 토큰 생성, response header에 담아 반환. -> 이후 api 접근하면 jwtAuthorizeFilter 타고 jwt 토큰 유효 여부 확인

으로 로직을 이해했고, 코드를 작성했는데 동작은 되지만 맞는 jwt를 header에 넣어서 보내고 있는지 지금 확인이 안됩니다.. 연동해서 로그인 해야하다 보니까 postman으로 보기도 조금 애매해서, 맞게 됐는지는 계속 찾아볼게용.

더 좋은 방법으로 코드를 짜셨거나, 제가 이상하게 이해하고 만든 부분이 있다면 바로 말씀해주세요~!!

d36choi commented 3 years ago

예은님 만드신거 테스트해보니까 유저 테이블에 등록은 잘되는데 JWT 랑 권한쪽은 좀 더 봐야겠네요. 어려워요 ㅋ image

RulLu16 commented 3 years ago

오오! 등록은 되네요 ㅠㅠ 네네 저도 오늘 좀더 찾아보고 테스트해볼게요!

RulLu16 commented 3 years ago

확인했습니당~! 머지할게요!

d36choi commented 3 years ago

데브로 합칠떈 주석 제거하는게 좋을거같아여

RulLu16 commented 3 years ago

squash 말고 그냥 머지할게요! 커밋로그가 조금 아까워서.. ㅎㅎ