JWT(JSON Web Token)와 세션(Session)은 인증 및 인가를 관리하기 위한 다른 방식의 메커니즘입니다.
- JWT(JSON Web Token):
- JWT는 클라이언트와 서버 간의 인증을 위한 토큰 기반의 인증 방식입니다.
- 사용자의 인증 정보가 토큰 안에 포함되어 있기 때문에, 서버는 세션 상태를 유지할 필요가 없습니다.
- 클라이언트가 서버에 인증을 요청하면, 서버는 JWT를 발급하고 클라이언트에게 전달합니다.
- 클라이언트는 이후 요청 시에 JWT를 헤더에 포함하여 서버에 전달합니다.
- 서버는 JWT를 검증하여 사용자를 인증하고, 필요한 권한을 부여합니다.
- 세션(Session):
- 세션은 서버 측에서 상태를 유지하는 인증 방식입니다.
- 사용자가 인증되면, 서버는 해당 사용자에 대한 세션을 생성하고, 세션 ID를 클라이언트에게 전달합니다.
- 클라이언트는 이후 요청 시에 세션 ID를 쿠키나 URL 매개변수 등을 통해 서버에 전달합니다.
- 서버는 클라이언트가 제공한 세션 ID를 사용하여 세션을 식별하고, 사용자를 인증하고, 필요한 권한을 부여합니다.
- 세션을 유지하기 위해서는 서버 측에서 사용자의 상태를 저장하는 공간이 필요하므로, 세션 관리를 위한 추가적인 리소스가 필요합니다.
간단히 말하자면, JWT는 서버가 상태를 유지하지 않는(stateless) 토큰 기반의 인증 방식이고, 세션은 서버가 상태를 유지하는(stateful) 인증 방식입니다.