| 용어 | 설명 |
|---|---|
| 인증 | "당신이 누구인가?"를 확인하는 과정 (ex. 로그인) |
| 인가 | "당신이 이 리소스를 사용할 권한이 있는가?"를 확인하는 과정 (ex. 관리자 권한 확인) |
👉 인증 후에 인가가 이뤄집니다.
세션은 서버가 사용자의 정보를 저장하고 기억하기 위한 수단입니다.
[1] 사용자가 로그인 요청
[2] 서버가 사용자 인증 성공
[3] 서버가 세션ID 생성 및 사용자 정보와 매핑하여 저장
[4] 세션ID를 클라이언트에게 Cookie로 전달
[5] 클라이언트는 이후 요청 시 세션ID를 포함시킴
[6] 서버는 세션ID를 통해 사용자 정보를 확인
sequenceDiagram
participant Client
participant Server
Client->>Server: 로그인 요청
Server->>Server: 사용자 인증 처리
Server->>Server: 세션 ID 생성 및 사용자 정보 저장
Server-->>Client: Set-Cookie: 세션 ID
Client->>Server: 요청 (세션 ID 포함 쿠키)
Server->>Server: 세션 ID로 사용자 정보 조회
Server-->>Client: 응답 처리
🔑 서버가 사용자 상태를 기억합니다.
JWT는 클라이언트가 인증 정보를 직접 보관하는 Stateless(무상태) 방식입니다.
Header.Payload.Signature| 부분 | 설명 |
|---|---|
| Header | 토큰 타입, 해시 알고리즘 |
| Payload | 사용자 정보(Claims) |
| Signature | 위조 방지를 위한 서명 |
[1] 사용자가 로그인 요청
[2] 서버가 인증 성공 → JWT 생성
[3] 클라이언트가 JWT를 받아 저장 (보통 LocalStorage나 Cookie)
[4] 요청 시 Authorization 헤더에 JWT 포함
[5] 서버는 토큰을 검증하여 사용자 식별