제 3의 서비스에 계정 관리를 맡기는 방식
OAuth를 사용하면 인증 서버에서 발급받은 토큰을 사용해서 리소스 서버에 리소스 오너의 정보를 요청하고 응답받아 사용할 수 있다.
클라이언트, 즉, 스프링 부트 서버가 특정 사용자 데이터에 접근하기 위해 권한 서버, 즉, 카카오나 구글 권한 서버에 요청을 보냄
요청 URI
클라이언트 ID
리다이렉트 URI : 로그인 성공 시 이동해야 하는 URI
Response Type : 클라이언트가 제공받길 원하는 응답 타입
스코프 : 제공받고자 하는 리소스 오너의 정보 목록
인증 서버에 요청을 처음 보내는 경우 사용자에게 보이는 페이지를 로그인 페이지로 변경하고 사용자의 데이터에 접근 동의를 얻는다. 이 과정은 최초 1회만 진행한다.
이후에는 인증 서버에서 동의 내용을 저장하고 있기 때문에 로그인만 진행한다.
로그인이 성공되면 권한 부여 서버는 데이터에 접근할 수 있게 인증 및 권한 부여를 수신한다.
사용자가 로그인에 성공하면 권한 요청 시에 파라미터로 보낸 Redirect URI로 리다이렉션된다.
이 때 파라미터에 인증 코드를 함께 제공한다.
인증 코드를 받으면 액세스 토큰으로 교환해야 한다.
액세스 토큰 : 로그인 세션에 대한 자격을 증명하는 식별 코드
클라이언트 ID, 리다이렉션 URI 등 정보와 함께 액세스 토큰을 요청하는 POST 요청을 보낸다.
인증 서버는 요청 값을 기반으로 유효한 정보인지 확인하고 액세스 토큰을 준다.
이제 제공받은 액세스 토큰으로 리소스 오너의 정보를 가져올 수 있다.
정보가 필요할 때마다 API 호출을 통해 정보를 가져오고 리소스 서버는 토큰이 유효한지 검사한 뒤에 응답한다.