<카카오 OAuth를 기반으로 알아보자>
카카오 공식 문서와 저의 이해를 바탕으로 작성되었습니다.
카카오 로그인은 카카오 계정과 애플리케이션을 연결하고 토큰을 발급받아 카카오 API를 사용할 수 있도록 하는 기능입니다.
토큰은 두 종류가 잇는데, 사용자를 인증하고 카카오 API 호출 권한을 부여하는 액세스 토큰과 액세스 토큰을 갱신하는 데 사용하는 리프레시 토큰이 있습니다.
카카오 로그인이 진행되는 과정은 간략히 아래의 그림과 같습니다.
즉, 사용자는 카카오 서버에 접근할 때, 이 이동 URL에 리다이렉트 URL로 우리 Application의 서버가 있는 것입니다.
사용자가 가지고 이동하는 것입니다. 즉, 사용자가 인증코드를 갖고 우리한테 오는 것입니다. URL이 변경 되는 것이지 카카오 서버가 사용자를 우리한테 보내는 것이 아닙니다.
카카오 서버가 우리 Application에 보내 주는 게 이상한 로직입니다. 이렇게 되버리면 사용자 화면이 카카오 페이지에서 안바뀔 텐데, 이 방식이 아니고 사용자의 화면이 바뀐다는 것은 사용자가 움직이는 것으로, redirect URL 즉, 사용자가 넘어갈 URL을 가지고 카카오 로그인 홈페이지로 가는 것입니다.
이렇게 인증코드를 갖고 온 시점에서 우리 Application 서버의 백엔드가 인지를 합니다. 사용자가 우리 Application 컨트롤러에 접근 했을 때, path에 파라미터로 온 인증 코드를 보고 이 인증 코드로 토큰을 요청합니다
Access Token을 통해서 User를 가져오는데, code로 Access Token을 , Access Token으로 User 정보를 가져옵니다.
HTTP의 특성으로 stateless하기 때문에 헤더에 넣어줘야합니다.