OAuth2.0

Stormi·2022년 2월 17일
0

개발

목록 보기
1/20

<카카오 OAuth를 기반으로 알아보자>

카카오 OAuth 공식문서

카카오 공식 문서와 저의 이해를 바탕으로 작성되었습니다.

  • 카카오 로그인은 카카오 계정과 애플리케이션을 연결하고 토큰을 발급받아 카카오 API를 사용할 수 있도록 하는 기능입니다.

  • 토큰은 두 종류가 잇는데, 사용자를 인증하고 카카오 API 호출 권한을 부여하는 액세스 토큰과 액세스 토큰을 갱신하는 데 사용하는 리프레시 토큰이 있습니다.

카카오 로그인이 진행되는 과정은 간략히 아래의 그림과 같습니다.

  1. 사용자가 앱에서 카카오 로그인 버튼을 클릭합니다.
  • 사용자는 버튼을 클릭함과 동시에 카카오 URL로 접근하는데 이때, 우리 application의 서버 URL을 갖고 넘어갑니다.

즉, 사용자는 카카오 서버에 접근할 때, 이 이동 URL에 리다이렉트 URL로 우리 Application의 서버가 있는 것입니다.

  1. 카카오서버는 리다이렉트 URL로 담긴 우리의 서버로 코드르 보내주는데, 이때 카카오 서버가 우리 Application에 보내주는 것이 아니라

사용자가 가지고 이동하는 것입니다. 즉, 사용자가 인증코드를 갖고 우리한테 오는 것입니다. URL이 변경 되는 것이지 카카오 서버가 사용자를 우리한테 보내는 것이 아닙니다.

  • 카카오 서버가 우리 Application에 보내 주는 게 이상한 로직입니다. 이렇게 되버리면 사용자 화면이 카카오 페이지에서 안바뀔 텐데, 이 방식이 아니고 사용자의 화면이 바뀐다는 것은 사용자가 움직이는 것으로, redirect URL 즉, 사용자가 넘어갈 URL을 가지고 카카오 로그인 홈페이지로 가는 것입니다.

  • 이렇게 인증코드를 갖고 온 시점에서 우리 Application 서버의 백엔드가 인지를 합니다. 사용자가 우리 Application 컨트롤러에 접근 했을 때, path에 파라미터로 온 인증 코드를 보고 이 인증 코드로 토큰을 요청합니다

  1. 앱은 전달 받은 인가 코드를 기반으로 토큰을 요청하고 받습니다.
  • 처음부터 코드말곡 Access Token을 주는 것이 힘든 것이 굉장히 취약합니다. Access Token의 주기가 코드보다 길어서 즉, ttl시간이 짧습니다.

Access Token을 통해서 User를 가져오는데, code로 Access Token을 , Access Token으로 User 정보를 가져옵니다.

  1. Access Token으로 사용자 정보를 조회 할 수 있습니다.
  • 이 플로우를 따라서 내가 카카오톡 서버의 코꿈이임을 증명 됐고, 로그인한 사용자임을 증명했습니다.
  1. Access Token을 가지고 API를 쓰면 토큰으로 API를 호출
  • 사용자 정보를 가져와서 이 사람이 우리랑 소통할 수 있도록 증명하는 것 즉, 증명서 같은 것을 헤더에 넣어줍니다. 이것은

HTTP의 특성으로 stateless하기 때문에 헤더에 넣어줘야합니다.

0개의 댓글