NestJs JWT(Json Web Token) 발행 및 확인해보기

taeng·2023년 9월 10일
1

사용자가 로그인하면 JWT를 생성하고, 이를 사용하여 요청에 대한 인증을 수행하거나 특정 권한을 부여하여 API보안을 위하여 사용하고 이전 포스팅에 authGuard로 JWT를 확인하여 API를 사용할 수 있게끔 해봤습니다.

JWT설치 및 기본 세팅

설치 방법

  • 아래 명령어를 통하여 설치를 진행해 줍니다.
 $ npm install --save @nestjs/jwt
import { JwtModule } from '@nestjs/jwt';

@Module({
  imports: [
 	JwtModule.register({
      global:true,
      secret: process.env.JWT_SECRET,
    })
  ]
})

전역으로 사용하기 위해 global을 true로 설정하였고 secret값에 환경변수로 관리하여 설정 해주었습니다.

JWT 발행하기

 let payload = {username:'tae',age:25,address:'seoul'}
 let response = this.jwtService.signAsync(
                    payload,
                    { expiresIn:'100y' }
                ).then(token=>{
                   console.log(token)
                }).catch((err)=>{
                    console.log('error',err);
                   
                })

signAsync(token에 넣을 정보,{option})
option에 비밀번호설정, 만료기한 등 위의 module에서 셋팅할 수 있지만 만료기한이 다르거나 jwt 비밀번호 값을 다르게 설정하려면 이 옵션안에 설정하여 각 특징이 다른 jwt를 발행하여 사용 할 수 있습니다.

JWT 검증하기

const payload = await this.jwtService.verifyAsync(
           token,
           {
               secret: process.env.JWT_SECRET
           }
       )
 console.log(payload)
 //result
 // {username:'tae',age:25,address:'seoul'}

위에서 발급한 토큰을 verifyAsync 함수를 사용활용하여 검증을 하였습니다. verifyAsync(검증할 토큰값 , {option}) option값에 비밀번호를 입력시 아래 결과와 같이 JWT에 담은 값을 확인 할 수있습니다.

참고

https://docs.nestjs.com/security/authentication

profile
주니어 백엔드 개발자 공부 정리

0개의 댓글