본문 바로가기
Computer Science/네트워크

[네트워크] 토큰과 OAuth란? (OAuth 과정, JWT와 OAuth 비교)

by 그적 2024. 3. 14.

목차

  • 토큰이란?
  • OAuth란?
  • OAuth 과정
  • JWT와 OAuth 비교

 


1. 토큰이란?

토큰은 서버와 클라이언트 사이의 상태정보를 저장하기 위해 사용되는 데이터이다. 로그인한 사용자라는 인증 정보와 사용자의 권한 정보를 가지고 있고, 토큰을 이용해 웹사이트를 이용할 수 있다.

 

토큰을 이용한 로그인 기능을 구현할 때, 엑세스 토큰과 리프래시 토큰을 이용한다. 엑세스 토큰을 가진 사용자는 웹페이지에 접근할 수 있는, 즉 인증된 사용자임을 나타내며 권한 정보를 통해 제한된 웹페이지 접근을 허용한다. 하지만 엑세스 토큰이 탈취된다면 누구든지 웹페이지에 접근할 수 있다. 따라서 엑세스 토큰은 짧은 토큰 유효 시간을 설정하고, 리프래시 토큰을 이용해 새로운 엑세스 토큰을 부여한다. 리프래시 토큰은 서버 측 데이터베이스에 저장되기 때문에, 리프래시 토큰이 탈취되더라도 리프래시 토큰 삭제 등으로 관리할 수 있다.

 


2. OAuth란?

OAuth는 토큰을 이용해 다른 사이트의 인증 정보를 받아오는 기능이다. 로그인 시에 '구글 이메일로 로그인하기' 혹은 '카카오톡으로 로그인하기'와 같은 기능이 대표적인 OAuth이며, 다른 사이트에 로그인을 하면 타 사이트의 아이디에 대한 인증 정보와 권한 정보를 받아 현재 사이트를 이용할 수 있게 되는 것이다.

 


3. OAuth 과정

1) 사용자가 구글 이메일로 로그인하기 클릭 후, 아이디/비밀번호 입력

 

2) 구글은 아이디/비밀번호가 맞으면 사용자에게 인증 코드 반환

 

3) 사용자는 인증 코드를 가지고 접근하고자 했던 웹사이트로 리다이렉션

 

4) 웹사이트는 구글에게 인증 코드와 함께 OAuth 요청

 

5) 구글은 리프래시 토큰과 엑세스 토큰을 웹사이트로 전달

 

6) 웹 사이트는 리프래시 토큰을 저장하고, 리프래시 토큰과 엑세스 토큰을 사용자에게 전달

 

7) 사용자는 엑세스 토큰을 이용해 서비스를 이용하고, 만료 시 리프래시 토큰을 포함해 엑세스 토큰을 새로 발급해 사용

 


4. JWT와 OAuth

간단하게 JWT는 토큰의 종류이고, OAuth는 토큰을 이용해 서드파티 인증을 진행하는 방식으로 설명할 수 있다. 웹 상에서 JWT를 이용해 사용자 인증을 하는데, JWT라는 토큰을 웹사이트에서 생성하는 것이 아닌 구글과 네이버 등과 같은 서드파티에서 전달받아 사용하는 것이다.

 

댓글