JWT - 역할 기반 관리하기
·
NestJS/개발
역할 기반 관리란?이전까지는 JWT 토큰만 있으면 누구나 특정 API에 접근할 수 있었다. 하지만 실제 서비스에서 가장 중요한 부분은 사용자의 역할(Role)에 따라 접근 가능한 영역이 다르다는 점이다. 예를 들어 /member/post는 일반 사용자와 관리자가 글을 작성할 수 있는 영역이지만, /admin/post는 관리자만 접근할 수 있는 영역이다. 만약 일반 사용자가 관리자 영역에 접근할 수 있다면 보안상 큰 문제가 발생한다. 이러한 역할 기반 접근 제어를 위해서는 Guard에서 JWT 인증뿐만 아니라 역할 체크까지 함께 수행해야 한다. 즉, 토큰의 유효성을 확인하고, payload에 포함된 역할 정보를 기반으로 요청자가 해당 API를 수행할 권한이 있는지 판단하는 것이 중요하다. 오늘 이부분에 관..
JWT - 토큰 활용하기
·
NestJS/개발
JWT토큰을 활용하는 방법이전 포스팅에서는 사용자가 로그인에 성공했을 때 JWT 토큰을 발급하는 과정에 대해 다뤘다. 하지만 실제 서비스에서는 단순 발급만으로는 충분하지 않다. 클라이언트가 발급받은 토큰을 서버 요청과 함께 전달하면, 서버는 이를 기반으로 사용자가 해당 API를 호출할 권한이 있는지 판단할 수 있다. 이번 포스트에서는 JWT 토큰을 활용한 인증(Authentication)과 인가(Authorization) 과정을 NestJS를 중심으로 살펴보고, 실제 API 요청에서 어떻게 안전하게 권한을 확인할 수 있는지 테스트 해보자. 이전 과정은 3번까지 였다면 이번에 하는 과정은 4번부터 6번까지이다. 헷갈리지 말자.인증 가드 구현하기 부분 공식사이트를 잘 확인해보자. 모든 개발 과정은 공식사이트..
JWT - 로그인 후 발급하기
·
NestJS/개발
JWT(Json Web Token)이란??JWT는 인증(Authentication) 과 인가(Authorization) 를 위해 사용되는 토큰 기반 인증 방식이다. 서버가 로그인에 성공한 사용자에게 토큰을 발급하고, 이후 요청마다 이 토큰을 함께 보내서 “누구인지”를 증명하는 구조이다.서버가 로그인 정보를 메모리 / DB / Redis에 저장클라이언트는 Session ID만 전달서버가 상태(State)를 관리서버 확장 시 세션 동기화 필요로드밸런서 환경에서 복잡모바일 앱, 외부 API 연동에 불리서버는 로그인 시 토큰만 발급이후 요청은 토큰으로만 인증서버는 상태를 저장하지 않음 (Stateless)토큰 탈취 시 위험토큰 강제 만료가 어려움Payload에 정보가 노출됨발급 같은 경우에는 아주 간단하다. 로..