구분 | 설명 | 예시 |
---|---|---|
인증 | 사용자가 누구인지 확인하는 절차 | 로그인 |
인가 | 인증된 사용자가 특정 리소스에 접근 가능한지 확인하는 절차 | 관리자만 글 삭제 가능 |
서버에서 인증이 완료된 사용자 정보를 토큰 형태로 클라이언트에게 발급하여,
이후 모든 요청에 토큰을 포함시켜 인증 상태를 유지할 수 있도록 하는 방식.
서버는 상태를 기억할 필요가 없으므로, 무상태(stateless) 인증 방식이다.
Header.Payload.Signature
Header: {
"alg": "HS256",
"typ": "JWT"
}
Payload: {
"sub": "user123",
"role": "ROLE_USER",
"exp": 1712345678
}
Signature: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
1. 사용자가 로그인(ID/PW) 요청
2. 서버가 사용자 인증 후 JWT 토큰 발급
3. 클라이언트는 이 토큰을 저장 (보통 LocalStorage 또는 Cookie)
4. 이후 요청 시 Authorization 헤더에 토큰 포함
→ Authorization: Bearer {토큰}
5. 서버는 토큰의 유효성을 검증하고, 사용자 인증 처리