카카오 로그인 과정, OAuth 동작 방식
본문 바로가기

Backend

카카오 로그인 과정, OAuth 동작 방식

카카오 로그인은 OAuth 2.0 프로토콜 중 Authorization Code Grant 방식을 사용한다.
우선, OAuth 에 대해서 알아보자.

OAuth (Open Authorization)

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트의 자신의 정보로 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 수단으로 사용되는, 
접근 위임을 위한 개방형 표준이다. (위키백과)

외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인을 할 때 사용하는 프로토콜
 

OAuth 동작 방식

Resource Server : Client가 제어하고자 하는 자원을 보유하고 있는 서버 (Google, Kakao 등)
Resource Owner : 자원의 소유자. 실제 유저
Client : Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트 (웹 어플리케이션)

  1. Resource server에 Client 등록: Client ID / Client Secret / Authorized redirect URL 부여 받음
  2. Resource Owner가 Resource Server에게 Client의 접근을 승인
    1. Resource Owner는 Client의 웹 어플리케이션을 이용하다가, 소셜 로그인 버튼 클릭
    2. Resource Server에 접속하여 로그인
    3. Resource Server는 Query String으로 넘어온 파라미터들을 통해 Client 검사
      1. 파라미터로 전달된 Client ID와 동일한 ID가 있는지
      2. 해당 ID에 해당하는 Redirect URL이 파라미터로 전달된 Redirect URL과 같은지
    4. Resource Server는 Authorization Code를 발급해줌
  3. Client는 ID, Secret, Code를 Resource Server에 전달하여 Resource Server의 자원을 사용할 수 있는 Access Token을 발급받음
  4. Access Token을 헤더에 담아서 Resource Server의 자원을 사용하기 위한 API를 호출
  5. 해당 계정과 연동된 Resource Server의 자원 및 기능들을 Client에서 사용 가능

크게 보면 두 가지 (1. 인증 처리 2. 권한 부여)
카카오 로그인 요청 -> Code 받음 : 인증됨
Access Token을 받음 : 유저가 Client에 Kakao에 있는 본인 정보에 접근할 수 있는 권한을 위임했다는 뜻
 

인증/인가 구현 방식

1. Cookie
2. Session
3. Token
 
JWT (JSON Web Token)은 stateless 한 구조를 유지하면서도 다른 인증 방식에 비해 보안성이 떨어지지 않는 방식이다. 웹 서비스에서 자주 사용되는 Token으로, Header, Payload, Signature로 구성되어 있다.
Payload : 전송하고자 하는 데이터
 

References