사용자 인증 방식 1) 기본 인증과 세션 기반 인증

Yeshin Lee
2 min readSep 3, 2024

--

최근에 로그인 기능을 구현할 일이 있어 인증 방식에 대해 알아본다. 로그인 기능을 구현하면 빼먹을 수 없는 개념이 ‘인증’이다. 인증은 나 자신이 누구인지 증명하는 것이다. 인증도구로 널리 사용되는 기본 인증, 세션 기반 인증 그리고 JWT에 대해 알아보자.

HTTP는 사용자 인증에 사용되는 자체 인증요구/응답 프레임워크를 제공한다. 기본 인증은 가장 잘 알려진 HTTP 인증 규약으로 대부분의 주요 클라이언트와 서버에 구현되어 있다.

무상태(stateless) 방식으로 서버는 클라이언트의 상태를 유지하지 않는다.

하지만 기본 인증에서 사용하는 Base64 인코딩은 몇 가지 보안적 결함을 갖고 있다.

  • 기본 인증은 데이터를 단순히 ASCII 텍스트로 변환하는 방법으로 Base64로 인코딩된 데이터는 쉽게 디코딩할 수 있다. 만약 악의적인 사용자가 네트워크에서 데이터를 가로챌 경우, 원래의 데이터를 쉽게 알아낼 수 있다.
  • 트랜잭션의 본 의도를 바꾸는 proxy 등이 중간에 개입하는 경우, 기본 인증은 정상 동작을 보장하지 않는다.
  • 가짜 서버의 위장에 취약하다.

사용자의 정보(아이디, 비밀번호)를 안전하게 보호하기 위해서는 HTTPS나 SSL을 사용한 데이터 암호화가 필요하다.

세션 기반 인증은 상태(state) 기반 인증 방식이다.

서버는 클라이언트의 세션 상태를 기억하고, 세션 데이터를 유지해야 하므로 리소스를 소비한다. 여러 서버에 세션을 유지하려면 세션 데이터를 공유해야하므로 복잡성이 증가하면서 확장성이 제한된다. 즉, 분산 환경이나 마이크로서비스 아키텍처에서 세션 기반 인증 구현이 어려울 수 있다.

위 두 가지 방식의 한계를 극복하면서 현대의 웹 애플리케이션의 요구사항(Statelessness, Scalablity, Security)을 충족하는 방식이 JWT(JSON Web Token)다. 클라이언트가 필요로 정보 모두를 포함하는 토큰을 사용하는 JWT에 대해서는 다음 포스트에서 알아볼 것이다.

--

--