알게된것,복습한것,헷갈렸던것 정리

JWT를 이용한 인증/인가 란?

ysrec328 2025. 11. 26. 15:46

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