JWT를 이용한 인증/인가
웹 서비스에서 사용자 신원을 확인하고, 권한을 판단하기 위해 사용하는
토큰 기반 인증 방식 입니다
->
쉽게 말하면 "로그인 했는지 확인하고, 무엇을 할 수 있는지 결정하는 방법"을
JWT(Json Web Token) 으로 처리하는 것 입니다
인증(Authentication) -> "누구세요?"
인증은 사용자가 누구인지 확인하는 과정입니다.
예시 흐름
1. 사용자가 로그인 요청(아이디/ 비밀번호 전송)
2. 서버가 계정 정보를 확인
3. 서버가 JWT Access Token(그리고 보통 Refresh Token) 발급
4. 사용자는 이후 요청 시 헤더에 Access Token 을 포함하여 전송
pgsql
Authorization: Bearer<Access Token>
5. 서버는 이 토큰만 보고도 "아, 이 사람은 인증된 사용자구나" 하고 판단합니다.
인가(Authentication) -> "누구세요?"
인가란 인증된 사용자가 접근 가능한 권한을 확인하는 과정 입니다
예시 흐름
로그인한 사용자라 해도,
글 읽기만 가능한지
글 쓰기만 가능한지
관리자 기능 사용이 가능한지 등을 구분해야 합니다.
Access Token 안에는 이런 정보가 들어 있습니다.
json
{
"sub" : "userId123",
"role" : "ADMIN",
"exp" : 170000000
}
서버는 토큰 속 role 또는 권한 정보를 보고 "이 요청을 허용해도 되는지" 판단합니다.
JWT는 왜 쓰는 걸까?
JWT의 장점은:
서버가 세션을 따로 안들어도 됩니다. (Stateless)
/ 서버는 DB나 Redis에 "로그인 상태"를 저장하지 않아도 됩니다.
토큰 자체에 인증 정보가 모두 들어있습니다.
확장성이 좋습니다.
/ 서버 여러 대가 띄워져 있어도 문제 없습니다.
토큰만 검증하면 되므로 서버 간 공유가 필요 없습니다.
빠릅니다
/ 토큰 검증만 하면 인증/인가 끝입니다.
요약
인증(Authentication) : 사용자가 누구인지 확인(로그인)
인가(Authorization) : 사용자가 무엇을 할 수 있는지 확인(권한)
JWT : 이 정보를 담아 클라이언트에게 주고, 요청마다 보내게 하는 토큰
'알게된것,복습한것,헷갈렸던것 정리' 카테고리의 다른 글
| 단위 테스트란? 통합 테스트란? (0) | 2025.11.27 |
|---|---|
| API 테스트란? (0) | 2025.11.27 |
| RESTful API 란? (0) | 2025.11.26 |
| LIKE와 =(등호) 차이 (0) | 2025.10.03 |
| 오버로딩(Overloading) 이란? (0) | 2025.09.27 |