Auth

3000·2021년 8월 31일
0

인증

클라이언트가 회원가입, 로그인, 글작성 등을 할 때, 서버에서 사용자를 식별하기 위해 인증이 필요합니다.

http는 Stateless Protocol입니다. 따라서 상태를 저장하지 않기 때문에 인증을 하기 위해 다음 두가지의 방법을 사용해 사용자를 식별할 수 있습니다.

세션과 쿠키

사용자에게 암호화된 고유한 ID를 부여하고, 사용자의 정보를 서버에 보관하는 방법입니다.

클라이언트가 로그인을 하면 서버에서 사용자가 유효한지 확인합니다. 사용자가 유효하다면 세션을 확인합니다. 세션이 없다면 세션을 만들어 저장하고 세션ID가 담긴 쿠키를 사용자에게 전달합니다.
클라이언트는 다른 요청을 보낼 때 쿠키와 함께 전달되어 세션을 확인하여 사용자를 파악할 수 있게 됩니다.

장점

  1. 모든 정보를 서버에서 보관하므로 신뢰할 수 있습니다.
  2. 쿠키를 사용하기 때문에 클라이언트에서의 다른 처리가 필요하지 않아 간단합니다.
  3. HttpOnly 옵션을 사용하여 더 안전하게 사용할 수 있습니다.
  4. 쿠키를 통해 sessionId를 전달하므로 보안에 유리합니다.

단점

  1. 서버에서 사용자의 세션을 보관하므로 서버의 확장이 요구됩니다.
  2. 세션을 분리하기 어려워, 서버를 확장하기 어렵습니다.

토큰

JWT라고도 하며, JSON을 통해 Web Token을 주고받아 인증을 하는 방법입니다.

클라이언트가 로그인을 하면 서버에서 사용자가 유효한지 확인합니다. 사용자가 유효하다면 Token을 만들어 클라이언트에게 보내줍니다. 클라이언트는 다른 요청을 보낼 때 이 Token을 Header에 포함하여 서버에 전달합니다. 그럼 서버는 이 Token이 유효한지 확인을 하고 클라이언트에게 요청에 대한 응답을 보내줍니다.

장점

  1. 세션과 달리 인증 정보를 서버에서 보관하지 않습니다.
  2. 성능이 좋고, 확장하기 용이합니다.

단점

  1. 사용자의 정보가 Token에 담겨있기 때문에 상대적으로 보안에 취약할 수 있습니다.

0개의 댓글