OAuth2 + JWT 구현에 이해가 어려운 부분이 있습니다.
OAuth2 인증 방식을 통한 로그인을 구현하면서 JWT 을 적용하는데 이해가 가지 않는 부분이 있습니다. 공부를 하는 과정에서 1. 직접 ID 와 Password 를 통한 로그인 방식 2. OAuth2 를 통한 로그인 방식 을 함께 구현해보려고 합니다. 1번 항목을 통해 로그인을 성공하면 JWT 를 통해 Access Token 과 Refresh Token 을 생성하고, Access Token 으로 로그인한 유저의 정보를 사용하려고 합니다. (예 : 쇼핑몰에서 장바구니를 눌렀을 때 로그인한 유저의 id값, DB의 장바구니 테이블에서 선택한 사람의 id값이 일치하는 경우) token 을 사용해서 1번의 항목에 대한 부분은 구현이 완료되었습니다. 또한 2번 항목에서는 OAuth2로 로그인을 하면 Access Token 을 정상적으로 받아오는 부분까지 테스트를 통해 확인했고, 로그인 기능이 정상적으로 동작하는 부분까지도 확인했습니다. 헷갈리는 부분은 Access Token 에서 발생합니다. 예를 들어 구글 로그인이라고 할 때, OAuth2 로그인 방식으로 발급받은 Access Token 은 클라이언트가 토큰이 만료되기 전까지는 로그인한 사용자의 정보를 가지고 있으며 이를 통해 리소스 서버에 필요한 서비스를 요청하는데 사용된다고 이해했습니다. 하지만 현재 구현해보고자 하는 앱(클라이언트)에서는 별도의 추가적인 서비스보다는 Id, Pwd 를 통한 인증방식이 아닌 다른 인증 방식을 적용해보고자 사용하려고 하는 목적이기 때문에 구글 로그인은 인증 방식 중 하나일 뿐이며 추후에 필요한 것은 로그인 한 유저의 이메일 정보 수준입니다. 이 때 인증 방식을 통과한 유저일 경우 JWT 포맷으로 만료 시간은 다르지만 access token 과 refresh token 을 발급하고 (Refresh token은 별도 저장할 계획입니다.) access token에 사용자의 정보를 담아 활용하려고 한다면 이메일 로그인을 한 유저일 경우 생성하는 access token 과 oauth 로그인을 통해 발급받은 access token 을 동일한 것으로 보아야 하는지 이해가 잘 가지 않습니다. 만약 같은 의미로 보는 것이 맞다고 하면 Oauth 를 통해 유저가 로그인 했을 경우이던 이메일(id, pwd) 로그인을 했을 경우이던 유저의 정보는 access token에 담아 사용하겠지만 이메일 로그인의 경우는 access token 을 앱에서 생성하여 response 를 통해 리턴하고 Oauth 의 경우는 발급받은 access token 을 전달하여 주면 되는 것일까요? 아니면 다른 경우라고 보는 것이 맞다고 하면 Oauth 로그인으로 발급받은 access token 은 authorization/resource server 과의 소통을 위해 필요한 것이고, 앱 자체에서 사용자 정보를 사용하기 위해서 필요한 토큰은 이메일 로그인과 마찬가지로 별도로 발급해 주는 것이 맞는지 궁금합니다. ————————————————————————————————————————— 많은 자료들을 찾아보고 이해해보려고 했으나 해당 부분에 대한 도움이 되는 자료를 찾지 못해 이렇게 질문하게 되었습니다. 아직 지식이 부족해 궁금한 부분에 대한 전달이 잘 되었는지 모르겠으나 의도가 이해가 가신다면 이해할 수 있는 설명을 해주시면 대단히 감사하겠습니다.