JWT (JSON Web Token)를 사용한 로그인 인증은 클라이언트와 서버 간에 상태를 유지하지 않는 상태에서도 사용자를 인증하는 방법입니다. 이 방식은 HTTP 헤더에 JWT를 포함시켜 서버에 전송하고, 서버는 이 토큰을 검증하여 사용자를 인증하는 방식으로 동작합니다. Node.js에서는 'jsonwebtoken' 및 'express-jwt' 모듈을 사용하여 JWT를 구현할 수 있습니다. 'jsonwebtoken' 모듈은 JWT를 생성하고 검증하는 데 사용되며, 'express-jwt' 모듈은 Express 미들웨어로서 JWT를 검증하는 데 사용됩니다. 먼저, JWT를 생성하는 로그인 라우트를 만들어 봅시다. 이 예제에서는 단순화를 위해 실제 사용자 인증 과정을 생략하겠습니다: const expre..
JWT 갱신 토큰과 슬라이딩 세션은 사용자 인증에 널리 사용되는 두 가지 전략입니다. 이들을 결합하여 사용하면 더욱 강력한 보안 전략을 구성할 수 있습니다. JWT 갱신 토큰: JWT 갱신 토큰은 보통 긴 유효 기간을 가지며, 이 토큰을 사용해 짧은 유효 기간을 가진 액세스 토큰을 새로 발급받을 수 있습니다. 이 방식은 갱신 토큰이 탈취되더라도 공격자가 지속적으로 시스템에 액세스하는 것을 막아줍니다. 갱신 토큰이 사용될 때마다 새 갱신 토큰이 발급되고, 이전 갱신 토큰은 무효화되므로, 갱신 토큰이 한 번 탈취되면 곧바로 무효화될 것입니다. 슬라이딩 세션: 슬라이딩 세션 전략에서는, 사용자가 활동을 할 때마다 세션의 유효 기간이 연장됩니다. 이렇게 하면 사용자가 계속 활동 중인 동안에는 로그아웃되지 않습니..
JWT 갱신 토큰을 클라이언트 측에서 관리하는 일반적인 방법 중 하나는 로컬 스토리지 또는 쿠키에 갱신 토큰을 저장하는 것입니다. 로컬 스토리지를 사용하는 경우, 갱신 토큰은 클라이언트의 브라우저 로컬 스토리지에 저장됩니다. 이렇게 하면, 웹 페이지가 리로드되거나 브라우저가 닫히더라도 토큰이 유지됩니다. 클라이언트는 API 요청을 보낼 때 로컬 스토리지에서 갱신 토큰을 가져와서 요청에 포함시키면 됩니다. 쿠키를 사용하는 경우, 갱신 토큰은 쿠키에 저장됩니다. 쿠키를 사용하면 서버가 클라이언트에게 쿠키를 자동으로 설정하고, 브라우저는 그 후의 모든 요청에 자동으로 쿠키를 포함시킵니다. 쿠키를 사용하는 것은 CSRF(Cross-Site Request Forgery) 공격에 대한 보호를 제공하지만, XSS(C..
JWT (JSON Web Tokens) 인증 시스템에서 토큰을 무효화하는 방법 중 하나는 블랙리스트(blacklist)를 사용하는 것입니다. 이 방법은 특정 토큰을 무효화하기 위해 그 토큰을 블랙리스트에 추가하는 것을 의미합니다. 블랙리스트를 사용하는 이유 JWT는 상태가 없는(stateless) 인증 메커니즘이기 때문에, 서버는 클라이언트로부터 전달받은 토큰이 유효한지만 확인하면 됩니다. 이로 인해 서버는 세션을 관리할 필요가 없어져서, 확장성이 향상되는 장점이 있습니다. 하지만 이런 장점에도 불구하고 JWT 인증 시스템에서는 아직 해결해야 하는 문제가 있습니다. 그 중 하나가 바로 "토큰의 무효화" 문제입니다. 예를 들어, 만약 토큰이 탈취당한 경우, 이 토큰이 만료되기 전까지는 탈취자가 이 토큰을 ..