Session
세션은 서버 측에서 유저의 상태를 유지하기 위한 방식입니다.
클라이언트가 서버에 로그인 요청을 보내면, 서버는 유저의 인증 정보를 검증하고, 유효한 경우 세션 ID를 발급합니다.
이후 클라이언트가 요청을 보낼 때마다 세션 ID를 함께 전달하여 서버에서는 이를 통해 유저의 인증 상태를 파악하고 요청을 처리합니다.
세션 ID는 어떤 방법으로 전달되냐면, 보통 쿠키 또는 URL Rewriting 방식을 사용하여 전달됩니다.
쿠키 방식은 서버에서 생성한 세션 ID를 클라이언트의 웹 브라우저에 저장하고, 클라이언트가 다시 요청을 보낼 때마다 해당 쿠키를 함께 전송하는 방식이고,
URL Rewriting 방식은 세션 ID를 URL 끝에 붙여서 전달하는 방식으로, 클라이언트가 요청을 보낼 때마다 URL에 세션 ID가 붙어서 전송됩니다.
세션은 보통 서버 메모리나 데이터베이스에 저장됩니다.
하지만, 서버에 과도한 부하를 일으키거나 클라이언트가 여러 대인 경우 확장성이 떨어질 수 있습니다.
Cookie
쿠키는 클라이언트 측에서 유저의 상태를 유지하기 위한 방식입니다.
클라이언트가 서버에 로그인 요청을 보내면, 서버는 유저의 인증 정보를 검증하고 유효한 경우 쿠키를 발급합니다.
이후 클라이언트가 요청을 보낼 때마다 쿠키를 함께 전달하여 서버에서는 이를 통해 유저의 인증 상태를 파악하고 요청을 처리합니다.
쿠키는 클라이언트 브라우저에 저장되며, 서버는 쿠키의 내용을 읽을 수 있습니다.
쿠키는 클라이언트 측에서 저장되기 때문에 서버의 부하를 줄일 수 있고, 클라이언트가 다수인 경우에도 확장성이 좋습니다.
하지만, 클라이언트 측에서 저장되기 때문에 쿠키를 조작하는 등의 보안 문제가 발생할 수 있습니다.
Token
토큰은 클라이언트 측에서 인증 정보를 저장하고 관리하기 위한 방식입니다.
클라이언트가 서버에 로그인 요청을 보내면, 서버는 유저의 인증 정보를 검증하고 유효한 경우 토큰을 발급합니다.
이후 클라이언트가 서버에 요청을 보낼 때마다 해당 토큰을 함께 전송하여 인증을 수행합니다.
토큰 인증 방식의 동작방식은 다음과 같습니다.
1. 클라이언트가 로그인을 하면, 서버는 해당 클라이언트에게 토큰을 발급
2. 클라이언트는 서버에서 받은 토큰을 저장, 이 때 일반적으로 쿠키 또는 로컬 스토리지에 저장됩니다.
3. 클라이언트는 서버에 요청을 보낼 때마다, 해당 토큰을 함께 전송합니다.
4. 서버는 해당 토큰을 검증하여, 해당 클라이언트가 인증되었는지 확인합니다.
5. 인증이 성공하면, 서버는 클라이언트의 요청에 대한 응답을 보내줍니다.
'기술면접' 카테고리의 다른 글
세션과 토큰 인증 방식 중 각각의 장단점을 말씀해 주세요 (0) | 2023.04.09 |
---|---|
Session(세션)에 대해 모르는 사람한테 설명하듯 간단하게 설명하시오 (0) | 2023.04.09 |
Spring에서 제공하는 HTTP 클라이언트 라이브러리에 대해 말하시 (0) | 2023.03.13 |
Rest Client 가 무엇인지 설명해 주세요 (0) | 2023.03.13 |
Spring MVC 프레임워크의 요청처리 과정 (0) | 2023.03.13 |