안녕하세요. oauth와 jwt관련 질문이 있습니다.
현재 안드로이드,ios와 스프링으로 간단한 토이 프로젝트 앱을 개발하고 있습니다.
oauth와 jwt로 인증 인가를 구축할 것 같은데요, 구현 방법에 질문이 있습니다.
공통 : 회원 테이블에 provider와 provider_id칼럼이 등록되어있습니다.
1안
- 안드로이드/ios에서 oauth서버로 인증을 진행한뒤 http에 provider와 provider_id만 담아서 스프링 서버로 전송
- 스프링 서버에서는 provider와 provider_id만을 가지고 내부 회원 db에서 조회 후 jwt토큰 발급
2안
- 안드로이드/ios에서 oauth서버로 인증을 진행한뒤 provider와 provider_id, 액세스 토큰을 http에 담아 스프링 서버로 전송
- 스프링서버에서는 액세스 토큰을 활용해 해당 OAuth 제공자에서 제공하는 API를 사용하여 검증
- provider와 provider_id가 유효할 경우에만 내부 회원 db에서 조회 후 jwt토큰 발급
제 생각에는 1안이 provider와 provider_id를 무차별적으로 조합해서 보내면 쉽게 뚫릴것 같은데
카카오공식 답변에서는 액세스 토큰을 직접 보내면 안된다하더라고요
https://devtalk.kakao.com/t/oauth2/128079
질문은 다음과 같습니다.
- oauth와 jwt를 활용해서 서버를 구축할 때 1안으로 구현하는게 맞는지 (서버에 provider와 provider_id만 보내기)1-1. 만약 아니라면 어떤 방식으로 구현해야하는지
- 1안이 맞다면 provider와 provider_id를 무차별적으로 조합해서 보내면 쉽게 뚫리는 것이 아닐지
- 액세스 토큰을 직접 보내 서버에서 검증하게 될 경우(2안)은 왜 위험한지가 궁금합니다.