- 23.11.07) TIL - 스프링 숙련주차 1일차2023년 11월 07일 20시 53분 10초에 업로드 된 글입니다.작성자: oneseel
스프링 숙련주차에 들어갔다.
오늘 공부한 내용
1. 쿠키와 세션
2. JWT
HTTP 프로토콜은 비연결성, 무상태라는 특징이 있다.
- 비연결성 : HTTP는 클라이언트와 서버 간의 각 요청-응답 사이에 지속적인 연결을 유지하지 않는다. (계속 유지하면 네트워크 비용이 많이 들기 때문) 이러한 특성은 서버의 자원 관리를 단순화하고, 여러 클라이언트의 요청을 효율적으로 처리한다.
- 무상태 : 각 요청-응답 사이에 상태 정보를 유지하지 않는다. 서버는 이전 요청에 대한 정보를 다음 요청에서 기억하지 않는다. 클라이언트가 서버에게 보내는 요청은 독립적이며 서로 무관하다.
이러한 특징이 있지만, 웹 애플리케이션은 사용자의 상태를 추적하고 유지해줘야한다.(인증이 필요하다) 그걸 인증해 줄 수 있는 것이 쿠키와 세션, 그리고 JWT이다.
1. 쿠키 (Cookies)
- 쿠키는 클라이언트 측에 작은 데이터 조각을 저장하는 메커니즘이다. 웹 서버는 클라이언트에 쿠키를 설정하고, 클라이언트는 이 쿠키를 요청 헤더에 포함하여 서버에게 상태 정보를 전달한다. 쿠키를 사용하면 사용자의 상태 정보를 저장하고 유지할 수 있다.
- 쿠키는 간단하지만 클라이언트가 가지고 있기 때문에 보완에 취약하다.
2. 세션 (Sessions)
- 세션은 서버 측에서 사용자 상태 정보를 유지하는 방법이다. 클라이언트가 서버에 최초로 요청을 보내면 서버는 세션 식별자를 생성하고 이를 클라이언트에게 보낸다. 이 식별자를 사용하여 서버는 해당 세션에 대한 상태 정보를 관리하고 유지한다.
- 세션은 서버에 있기 때문에 보완에는 안전하지만, 서버에 문제가 생기면 로그인이 순간에 날아가버리는 일이 발생할 수도 있다.
- 또한 서버 컴퓨터는 1대가 아니기 때문에 서버 컴퓨터가 서로 다른 세션을 가지고 있는데 클라이언트가 요청을 한다면 문제가 발생한다.(클라이언트와 서버를 고정한다던가, 세션저장소를 사용한다던가 방법은 있다)
이러한 문제를 해결한게 JWT.
3. JWT (JSON Web Tokens)
- JWT는 클레임(Claim) 정보를 포함하고 정보를 안전하게 교환하기 위한 경량의 토큰 형식을 정의하는 프로토콜이다.
- 주로 웹 및 모바일 애플리케이션에서 사용되며, 인증 및 권한을 관리하기 위한 목적으로 널리 사용된다.
- JWT는 JSON 포맷을 사용하며, 헤더(Header), 페이로드(Payload), 서명(Signature)으로 구성된다. 이러한 구성 요소는 Base64 URL로 인코딩되어 하나의 문자열로 나타난다.
- JWT의 주요 장점 중 하나는 확장성이며, JSON 포맷을 사용하므로 다양한 클라이언트 및 서버에서 쉽게 구현할 수 있다. 또한, 서버 측에 데이터를 저장하지 않으므로 서버의 확장성을 향상시킬 수 있다.
- 단점으로는 JWT는 한 번 발급되면 만료되기 전까지 변경되지 않으므로, 동적인 세션 관리에는 적합하지 않을 수 있습니다.
'TIL' 카테고리의 다른 글
23.11.09) TIL - 스프링 숙련 주차 3일차 (0) 2023.11.09 23.11.08)TIL - 스프링 숙련주차 2일차 (0) 2023.11.08 23.11.06) TIL - 익명 게시판 만들기 (0) 2023.11.06 23.10.30) TIL - 재귀함수 (0) 2023.10.30 23.10.24) 팀 프로젝트 - 호텔 예약 프로그램 (0) 2023.10.24 댓글