인프런 커뮤니티 질문&답변

꾸준히하면언젠간님의 프로필 이미지

작성한 질문수

스프링 시큐리티 OAuth2

OAuth2 로그인 이후 통신 방법

해결된 질문

23.02.01 15:15 작성

·

651

·

수정됨

2

안녕하세요.

OAuth2 로그인 이후에 검증 방식에 대해 궁금한 점이 있어서 질문 드려봅니다.

현재 프로젝트에서 OAuth2 를 이용하여 로그인 하는 기능을 사용하고자 하여, 강사님의 강의를 통해 OAuth2 Login을 적용시켰습니다.

OAuth2 를 이용하여 회원가입을 하고, 회원가입이 완료되어 OAuth2로 로그인하면, 자체적으로 생성한 JWT Token 을 이용하여 Client 와 통신을 하는 방식으로 구현하였습니다.

API 호출 마다 JWT 토큰만으로 인증을 하고 있었는데, JWT 토큰 이후 이 유저가 OAuth2(예를들어 네이버 같은 서버)에서도 유효한 회원인 지 검증이 필요하지 않을까 생각이 들었고,

유저가 OAuth2 서버에서 유효한 회원인 지 검증 하는 부분을 만들고자 하는데, 내부적으로 이용할 수 있는 기능이 있는지 문의 드립니다.

ClientRegistration 에 user-info-uri 를 통해 유저 정보를 가져오기 때문에, 예를 들어 oauth2_authorized_client의 accessToken을 이용하여 Naver(OAuth2)에서 회원을 간단하게 조회하고 검증 작업을 진행하면 되지 않을까 해서 내부적으로 이용할 수 있는 기능이 있을 것 같아서요..

아니면 OAuth2 로그인 이후에 검증 방식에 대해서 제가 잘못 이해한 부분이 있다면 말씀 부탁 드리겠습니다

감사합니다.

답변 1

2

정수원님의 프로필 이미지
정수원
지식공유자

2023. 02. 03. 15:11

OAuth2로 로그인하고, 자체적으로 생성한 JWT Token 을 사용해서 인증상태를 유지하는 것이라면 굳이 네이버나 카카오 등에서 OAuth2 유저의 유효성을 별도로 체크할 필요는 없을 것 같습니다.

OAuth2 의 역할은 사용자를 대신해서 클라이언트가 사용자의 리소스를 참조하도록 권한을 부여하는 역할까지이고 그 이후에 인증상태를 유지하는 부분은 세션을 활용하거나 JWT 를 활용해서 처리하면 되는 문제입니다.

즉 JWT 에 대한 유효성 체크에만 신경쓰시면 됩니다.

다만 JWT 가 만료되어 더 이상 사용할 수 없을 경우 다시 OAuth2 토큰을 발급받아 로그인 처리하는 부분은 계속 체크가 필요합니다.

OAuth2 는 클라이언트 입장에서 사용자가 간편하게 로그인 처리를 하기 위해 대신해서 인가서버로부터 권한을 부여 받게 하는 것이 가장 큰 목적이지 계속해서 클라이언트가 인가서버와의 사용자의 상태에 대한 체크를 할 필요는 없습니다.

꾸준히하면언젠간님의 프로필 이미지

2023. 02. 03. 17:38

말씀 감사합니다!

다만 `JWT 가 만료되어 더 이상 사용할 수 없을 경우 다시 OAuth2 토큰을 발급받아 로그인 처리하는 부분` 에 대해서 궁금한 점이 있습니다.

자체적으로 생성한 JWT Token 이어서 JWT가 만료될 경우 Refresh Token 을 이용하여, JWT 를 자체적으로 갱신하는 방식으로 진행하려 하는데, 이 때 OAuth2 토큰을 발급 하는 부분에 대해 잘 모르겠습니다.

자체적으로 생성 한 JWT를 갱신할 때, oauth2_authorized_client 에 존재하는 OAuth2 AccessToken 의 갱신이 필요하다는 말씀이실까요 ?