[Java] 초간단! 쿠키, 세션, 토큰

2024. 2. 29. 20:35Memorizing/Java

728x90

본 포스팅은 클라이언트와 서버가 인증, 인가하는 방식인 쿠키, 세션, 토큰에 대해 다룹니다.

HTTP의 특성

웹 클라이언트와 서버는 HTTP라는 프로토콜을 이용하여 통신합니다. HTTP는 비연결성무상태성의 특징을 가지고 있습니다. 

비연결성

비연결성은 서버와 클라이언트가 항상 연결되어있지는 않다는 것입니다.

무상태성

무상태성은 서버가 클라이언트의 상태를 저장하지 않는다는 것입니다. 

HTTP가 두 가지 특징을 가지고있기 때문에 서버의 부하를 줄일 수 있지만, 유저 로그인과 같이 인증된 유저는 기억하고 있어야하는 경우 비연결성과 무상태성 때문에 이 정보를 기억하지 못할 수 있습니다.

따라서 유저 로그인과 같은 정보를 유지시키는 과제를 풀어야하는데, 그 과정에서 쓰이는 것이 쿠키, 세션, 토큰입니다.

쿠키

쿠키는 웹사이트 접속 시 브라우저에 저장되는 작은 텍스트파일입니다. 웹사이트에서는 쿠키를 통해 어떤 기기로 접속했는지 인식하고, 일부 데이터를 저장합니다.

세션

세션은 무작위적인 세션 아이디가 접속 중인 웹서버에 저장되고 이것을 클라이언트에게 제공하여 요청에 대한 허가를 진행합니다.

예를들어, 로그인에 성공했을 시 서버에서 세션 아이디를 클라이언트에게 발급하고,  클라이언트가 웹서버에 요청을 보냈을 때, 웹서버에 존재하는 세션 아이디와 클라이언트가 제출한 세션 아이디가 일치하는 경우만 허가해줍니다. 

토큰

토큰은 난수 형태의 문자열입니다. 이 문자열은 웹서버에 접근하려는 유저들에게 권한을 부여하는 카드키로 사용됩니다. 웹서버에 저장된 비밀키를 이용하여 클라이언트가 가진 카드키를 검증했을 때, 검증을 통과해야만 웹서버에 접근할 수있도록 허가해줍니다.

쿠키, 세션, 토큰에 대한 예시를 그림으로 나타내면 아래와 같습니다.

세션의 인증방식
토큰의 인증방식

'Memorizing > Java' 카테고리의 다른 글

[QueryDSL] 최신! 환경설정  (3) 2024.03.06
[Java] 제네릭 - 2  (0) 2024.02.19
[Java] 제네릭 - 1  (0) 2024.02.19
[Java] 프로세스와 스레드 - 4  (1) 2024.02.17
[Java] 프로세스와 스레드 - 3  (0) 2024.02.17