1. 토큰(Token)이란?
토큰(Token)은 사용자를 인증하기 위한 디지털 출입증이라고 볼 수 있다.
기존 방식에서는 사용자가 요청할 때마다 아이디와 비밀번호를 확인해야 했다면, 토큰 방식에서는 로그인 후 발급받은 토큰을 이용해 사용자를 인증한다.
즉, 사용자는 한 번 로그인한 뒤 서버로부터 토큰을 발급받고, 이후 API를 요청할 때마다 이 토큰을 함께 보내 인증을 받는다.
2. 토큰(Token) 종류
- JWT (Json Web Token)
정의: 사용자 식별 정보(Claim)를 담은 토큰
구조: Header.Payload.Signature
* Header: 토큰 생성 방식 설명
* Payload: 사용자 정보 (id, 권한, 만료시간 등)
* Signature: 위변조 방지용 서명
다만 JWT는 암호화된 토큰이 아니다.
Base64 방식으로 인코딩되어 있기 때문에 누구나 내용을 확인할 수 있다.
* Base64 방식: 데이터를 사람이 읽기 쉬운 문자 형태로 변환하는 인코딩 방식이다 (암호화 아님)
따라서 JWT 안에는 비밀번호, 주민번호, 개인정보 같은 민감정보를 절대 넣으면 안 된다.
*민감정보 넣으면 안 되는 이유 보충설명*
=> 이건 암호가 아니라 그냥 "보이는 정보" 즉, 누구나 열어볼 수 있음을 의미한다.//Playload 부분 { "sub":"user123", "role":"admin", "exp":1710003600 }
=> 비밀번호, 주민번호 넣으면 안 된다. - Access Token
정의: Access Token은 API 요청 시 실제로 사용하는 인증 토큰
사용자가 로그인에 성공하면 서버는 Access Token을 발급한다.
이후 사용자는 API를 요청할 때 다음과 같이 Header에 Access Token을 담아 보낸다.
Authorization: Bearer {Access Token}- 특징
- 유효기간 짧음 (보통 5~30분) => 토큰 탈취 위험 최소화
- 특징
- Refresh Token
정의: Access Token을 다시 발급받기 위해 사용하는 토큰
Access Token은 보안을 위해 짧게 유지하는 것이 좋지만, 너무 자주 로그인해야 하면 사용자가 불편하다.
이 문제를 해결하기 위해 Refresh Token을 함께 사용
흐름
로그인 -> Access + Refresh Token 발급 API 요청 -> Access Token 사용 Access Token 만료 -> Refresh Token으로 Access Token 재발급 Refresh Token 만료 -> 로그인하여 Access + Refresh Token 신규 발급- 특징
- 유효기간 김
- 보통 HttpOnly 쿠키에 저장
*HttpOnly 쿠키: 브라우저에는 저장되지만 JS로는 못 꺼내는 안전한 쿠키
- 서버(DB/Redis)에 저장하는 경우 많음
*Redis: Redis는 데이터를 메모리에 저장해 매우 빠르게 읽고 쓸 수 있는 인메모리 데이터 저장소
- 특징
- OAuth2
정의: 외부 서비스에 로그인과 권한을 맡기는 방식
예시: 구글 로그인, 카카오 로그인, 네이버 로그인
사용자가 우리 서비스에 직접 아이디와 비밀번호를 입력하는 대신, 구글이나 카카오 같은 외부 서비스에서 인증을 진행
- 특징
- 장점은 사용자의 비밀번호를 우리 서비스가 직접 관리하지 않아 -> 보안측면 유리
- 특징
3. 결론 요약
JWT로 사용자 정보를 담고, Access Token으로 API를 요청하고, Refresh Token으로 인증을 이어가며, OAuth2로 외부 로그인을 처리한다.
'Tech Stack' 카테고리의 다른 글
| Cvat 활용 라벨링 방법 (0) | 2026.05.04 |
|---|---|
| 펌웨어(Firmware)란? (0) | 2026.05.04 |
| 로컬 서버를 다른 기기에서 접속하는 방법 (IP + Port 개념) (0) | 2026.04.28 |
| YOLO 이미지 라벨링 방법 (labellmg 사용 방법) (0) | 2026.04.25 |
| PyTorch + ResNet18으로 이미지 분류 AI 만들기 (전이학습 실습) (0) | 2026.04.24 |
