Introduction
베하 ~! 엄 팀입니다. JWT (JSON Web Token) 토큰과 세션은 웹 개발에서 사용되는 인증과 관련하여 매우 중요한 개념입니다. 이번 시간에는 JWT 토큰과 세션의 개념과 원리를 설명하고, 두 가지 방식의 차이점을 자세히 알아보겠습니다.
- JWT (JSON Web Token):
- JWT는 클레임 기반의 웹 토큰입니다. 클레임은 사용자의 정보와 데이터를 JSON 형태로 포함하는 JSON 객체입니다.
- JWT는 기본적으로 서명된 토큰으로, 사용자 인증과 데이터 무결성을 보장합니다.
- 사용자가 인증되면 서버에서 JWT 토큰을 생성하고 클라이언트로 전달합니다.
- 클라이언트는 이 토큰을 저장하고, 이후 서버 요청마다 헤더에 포함하여 전송합니다.
- 서버는 JWT를 검증하고, 클레임에 저장된 사용자 정보를 사용하여 인증 및 권한 부여를 처리합니다.
- JWT 토큰은 서버의 상태를 저장하지 않으므로 Stateless한 구조를 가집니다.
- 만료 시간이 설정되어 토큰이 만료되면 다시 인증을 해야 합니다.
- 세션:
- 세션은 서버 측에서 유지되는 상태 정보입니다. 주로 웹 애플리케이션의 인증과 관련된 데이터를 저장하는 데 사용됩니다.
- 사용자가 인증되면 서버에서 세션을 생성하고, 클라이언트에게 세션 ID를 쿠키 형태로 전달합니다.
- 클라이언트는 세션 ID를 쿠키에 저장하고, 이후 서버 요청마다 쿠키를 헤더에 포함하여 전송합니다.
- 서버는 세션 ID를 사용하여 세션 정보를 조회하고, 사용자의 인증 및 권한을 처리합니다.
- 세션은 서버 측에서 저장되기 때문에 클라이언트에 저장된 정보보다 보안성이 높습니다.
- 세션은 만료 시간이 설정되어 만료되면 다시 인증을 해야 합니다.
What is Difference?:
- 저장 위치:
- JWT 토큰: 클라이언트에 저장됩니다.
- 세션: 서버에 저장됩니다.
- 구조:
- JWT 토큰: 클레임을 포함하는 JSON 형태의 토큰입니다.
- 세션: 서버에 저장되는 데이터로, 일반적으로 사용자 정보 및 기타 세션 데이터를 포함합니다.
- 보안성:
- JWT 토큰: 서명되어 있기 때문에 데이터 무결성을 보장합니다.
- 세션: 서버 측에서 저장되므로 보안성이 높습니다.
- 상태 유지:
- JWT 토큰: Stateless한 구조이므로 서버에 상태를 저장하지 않습니다.
- 세션: 서버 측에서 세션 정보를 유지합니다.
- 만료 시간:
- JWT 토큰: 만료 시간이 설정되어 토큰이 만료되면 다시 인증을 해야 합니다.
- 세션: 만료 시간이 설정되어 세션이 만료되면 다시 인증을 해야 합니다.
Conclusion
JWT 토큰과 세션은 웹 애플리케이션에서 사용자 인증과 관련된 중요한 요소입니다. JWT 토큰은 클라이언트에 저장되며, 서버의 Stateless한 구조를 지원합니다. 반면에 세션은 서버에 저장되어 보안성이 높습니다. 프로젝트의 요구 사항과 보안 수준에 따라 JWT 토큰 또는 세션을 적절히 선택하여 사용하는 것이 중요합니다.
'IT KNOWLEDGE' 카테고리의 다른 글
Translation LLM 실습 (0) | 2023.07.21 |
---|---|
백엔드란? (0) | 2023.07.21 |
경쟁조건(Race Condition) (0) | 2023.07.21 |
Rancher로 Kubernetes 환경 구축하기 - 클러스터 구축 (0) | 2023.07.21 |
HTTP Request, Response 구조 (0) | 2023.07.17 |
댓글