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

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

OAuth2 + JWT 구현 #3

Closed d36choi closed 3 years ago

d36choi commented 3 years ago

image @RulLu16

RulLu16 commented 3 years ago

넵 security까지 해서 먼저 다시 공부해보겠습니다!

RulLu16 commented 3 years ago

로그인은 미리 대략적으로라도 하면 좋을거같아서, 제가 오늘, 내일 동안 한번 시도해보려 하는데 괜찮을까요?? 예제만 구동해봐서 잘될지는 모르겠네요..ㅎㅎ

RulLu16 commented 3 years ago

앗 그리고 jwt 관련해서, 저는 예전에 jwt 유효시간을 1시간~2시간 정도로 잡고 토큰 하나만 발행해서 프론트에 전달하는 방식으로 했었습니다. 이 방법이 편하긴 한데, 보안 상 문제가 있을 수 있다고 알고 있습니다. 이 방법이 아니면, access와 refresh 토큰 두 개 발행해서 관리하는 방법이 있는 것으로 아는데, 혹시 어떤 방법이 좋을지 생각해보신게 있을까용??

d36choi commented 3 years ago

전 JWT를 써본적이 없어요 ㅋㅋ 잘 모르겠네요.. 저도 퇴근하고 한번 건드려보겠습니다 oauth2 랑 jwt는 같이 아예 안쓰는게 맞는건가요? 두개가 같이 쓰는게 아닌건가,..,.

d36choi commented 3 years ago

http://yoonbumtae.com/?p=3000 https://github.com/alalstjr/Java-spring-boot-security-jwt#JWT-Token-%EC%83%9D%EC%84%B1 https://github.com/callicoder/spring-boot-react-oauth2-social-login-demo

RulLu16 commented 3 years ago

앗 ㅋㅋㅋㅋ 같이 써도 되는걸로 알고 있어요! oauth2로 로그인이 성공하면, 얻은 회원 정보를 바탕으로 jwt 만들어서 client에 전달하면 될거 같아요. 전자의 경우에는 jwt 유효 시간을 조금 길게해서 client에 전달하면 해당 유저는 유효 시간동안 로그인이 되어있는 상태일거에요. 다만, 유효시간이 길기 때문에 jwt 토큰이 유출되면 유효시간동안 보안에 문제가 발생할 수 있는데, jwt 토큰 하나만 관리하면 되니까 저희가 편하죠.. ㅎㅎ 후자는.. 저희가 토큰을 두 개로 관리해야되기 때문에 조금 복잡한데, 유효시간이 짧은 access 토큰으로 접근하니까 보안성은 조금 더 좋아질거같아요.

개인적으로 저는 전자만 해봐서... 후자는 얼마나 복잡해질지 잘 모르겠어요 ㅋㅋㅋ

https://velog.io/@tmdgh0221/Spring-Security-%EC%99%80-OAuth-2.0-%EC%99%80-JWT-%EC%9D%98-%EC%BD%9C%EB%9D%BC%EB%B3%B4 요게 정리가 잘된거 같아서, 저는 아마 이거 참고해서 해보려 합니당

d36choi commented 3 years ago

오우 그렇군요. 편하신대로 진행하시죠 맞춰 가겠습니다. 만약 이 사이트를 배포하고 앞으로도 운영할 계획이라면 보안이 중요하니 후자가 맞겠네요. 프로젝트성으로 하는거라면 전자여도 괜찮을 거라 생각합니다~ 근데 저 글에 보니까 코드에 주석이 꽤나 많은데 그대로 따라하긴 힘들 수도 있겠네요...

그리고 어떤 oauth api 를 쓸지도 정해놓으면 좋을 거 같은데 구글,깃허브는 스프링에서 공식지원하는 애들이고 카카오,네이버는 커스텀해서 따로 클래스 만들어줘야하잖아요? 그래서 제생각엔 다 하는거보다 구글깃허브만 or kakao naver만 하는게 양을 줄일 수 있을것같아요

RulLu16 commented 3 years ago

저는 구글, 깃허브 만 생각했었습니다! 다하는건 조금 불필요할거같아요 저녁부터 따라해볼 생각인데, 다른 것도 참고해봐야겠네요! 우선은 전자로 해볼 생각이고, 잘된다면 후자를 고려해봐도 좋을거같아요!

d36choi commented 3 years ago

넵 구글 깃허브 좋아여~ 저도 그게 좋다는 생각을 가지고 있었어여 저는 그러면 디비 테이블 필드들랑 기타 준비할 것들 생각하고 있을게요.

d36choi commented 3 years ago

oauth2 관련 erd

d36choi commented 3 years ago

만약에 사이즈 커서 힘드시면 제가 이어받아서 할게요

RulLu16 commented 3 years ago

넵. 일단 오늘까지 한번 시도해보겠습니당~!