[취준일지] 세션, JWT 토큰, 쿠키, RestfulAPI, HTTP 메소드
1. 세션 기반의 인증 방식과 토큰(JWT)기반의 인증 방식에 대해 설명해주세요.
세션 기반 인증 방식은 사용자가 로그인하면 서버에서 사용자정보를 세션에 저장하고, 이 세션을 식별할 수 있는 세션ID를 발급합니다. 이 ID는 클라이언트에 쿠키로 저장되며, 클라이언트는 요청마다 이 쿠키를 서버에 전송해 사용자인증을 합니다. 서버는 세션 저장소에서 해당 세션 ID를 찾아 사용자 정보를 확인합니다.
토큰 기반 인증 방식은 사용자가 로그인하면 서버에서 사요자정보를 바탕으로 토큰을 생성하여 클라이언트에게 전달합니다. 클라이언트는 요청 시 이 토큰을 서버에 전송해 사용자인증을 합니다. 서버는 토큰을 검증하고 클라이언트의 요청을 처리합니다.
1-1. JWT를 이용한 인증 방식의 장점을 설명해주세요.
우선 Stateless(무상태성)의 장점이 있습니다. 서버는 클라이언트의 상태를 저장하지 않으므로 확장성이 높아집니다.
보안 측면에서 토큰은 정보를 암호화할 수 있으며 서명이 되어 있기 때문에 무결성 또한 보장합니다.
세션을 관리할 필요하 없고 요청마다 토큰만 검증하면 되므로 처리과정이 간단하다는 장점도 있습니다.
어떤 언어에서도 사용할 수 있어 다양한 시스템간의 인증에 용이합니다.
2. Client의 쿠키, 세션, 로컬 저장소에 대해 알고 계신 만큼 설명해주세요.
쿠키는 사용자의 브라우저에 저장되는 작은 데이터 조각이며, 사용자 인증 및 세션 관리 등에 사용됩니다. 쿠키는 세션 기반 또는 영구 수명을 모두 가질 수 있습니다. 세션 쿠키는 브라우저 세션이 끝나면 삭제되는 반면, 영구 쿠키는 만료되거나 수동으로 삭제될 때까지 사용자 장치에 남아 있습니다.
세션 저장소는 일반적으로 쿠키에 비해 저장 용량 제한이 더 크며 세션이 종료되면(예: 브라우저가 닫히면) 데이터가 자동으로 지워집니다. 다른 탭이나 창에서는 액세스할 수 없으며 다른 브라우저 세션에서도 액세스할 수 없습니다.
로컬 저장소는 세션 저장소와 유사하지만 브라우저를 닫았다가 다시 연 후에도 지속되는 영구 저장소를 제공합니다. 일반적으로 데이터 캐싱, 오프라인 웹 애플리케이션 및 사용자 기본 설정 저장에 사용됩니다.
3. Restful API에 대해 알고 계신 만큼 설명해주세요.
웹 표준을 사용하여 서버와 클라이언트 사이의 통신을 구현하는 방법입니다.
URI를 정의하고, 이 URI 및 기능들은 GET, POST, PUT, DELETE 와 같은 표준 HTTP 메소드를 사용하여 액세스하고 조작할 수 있는 리소스로 모델링되어 리소스 지향적이라 할 수 있습니다.
각 요청은 자원을 처리하는 데 필요한 모든 정보를 포함하며, stateless 통신을 지향합니다.
4. HTTP METHOD 에 대해서 아는만큼, 중요하다고 생각하는 순서로 설정해주세요.
GET: 리소스 조회
POST: 리소스 생성
PUT: 리소스 전체 수정
DELETE: 리소스 삭제
PATCH: 리소스 부분 수정
4-1. HTTP 메서드 PUT과 PATCH의 차이점에 대해 설명해주세요.
PUT 메서드는 대상 리소스의 전체를 교체하는 데 사용됩니다.
예를 들어, 사용자 프로필 정보를 업데이트할 때 모든 필드 정보(이름, 이메일, 주소 등)를 제공해야 합니다. 만약 일부 필드만 제공되면, 나머지 필드는 누락되거나 초기값으로 설정될 수 있습니다.
PATCH 메서드는 대상 리소스의 일부를 수정하는 데 사용됩니다.
사용자가 제공한 필드만 업데이트되며, 나머지 필드는 영향을 받지 않습니다. 따라서, 리소스의 부분적인 변경이 필요할 때 사용하기 적합합니다.