인증

    NestJS 기초 (13) JWT를 사용한 인증 인가 처리와 데코레이터 구현

    이번 포스팅에서는 JWT를 사용하여 사용자의 인증 및 인가를 처리하고 이를 데코레이터로 구현하여 가드로 활용하는 방법에 대해 알아보도록 하겠습니다. JWT 기본 개념 JWT는 Jason Web Token의 약자로 두 주체가 안전한 방식으로 클레임(claims)을 주고 받는 방법입니다. JWT에 포함된 클레임은 JSON 객체로 인코딩되는데요. 공식 웹사이트인 Jwt.io에서 JWT를 인코딩 또는 디코딩해볼 수 있습니다. JWT 구성 JWT를 구현하기 전에 JWT를 사용하기 위해 알아야 할 기본 구성에 대해 살펴보도록 하겠습니다. JWT는 크게 3가지 요소인 헤더, 페이로드, 서명으로 구성되는데요. 각 요소는 .으로 구분합니다. 헤더(header) 헤더에는 JWT 유형과 알고리즘이 담깁니다. { "typ":..


    NestJS 기초 (12) 가드를 사용한 인증과 인가

    인증 및 인가의 기본 로직은 1. 접근 여부를 파악하고 2. 신원 정보를 확인하고 3. 일치하면 true 아니면 false를 리턴하는 것입니다. 과정을 통과하지 못하는 경우 보통 권한 없음(401) 또는 제한됨(403) 에러를 반환합니다. 가드란? 가드는 CanActivate 인터페이스를 구현하며 싱글 리포지토리를 갖습니다. 가드는 요청을 조건에 따라 라우트 핸들러에서 처리 여부를 결정합니다. 이를 보통 인증이라 합니다. Express 애플리케이션에서 인증은 보통 미들웨어에서 처리했습니다. 그러나 미들웨어는 next()를 호출한 다음 어떠한 핸들러가 실행되는지 알지 못합니다. 반면, 가드는 ExecutionContext 인스턴스에 접근할 수 있으며, 다음에 실행될 것을 분명히 알고 있습니다. 가드를 통한..