인프런 커뮤니티 질문&답변
JWT관련 질문입니다.
작성
·
297
2
사실 강의에 대한 질문은 아니고 공식문서쪽에 관한 질문인데요.
강의를 보고나서 강의대로 말고 공식문서를 보고 JWT를 이용해서 로그인/회원가입 기능을 구현해봤는데 구현자체는 잘 되었는데 이해가 안가는 부분이 있어서 질문드립니다..
공식문서 Security/Authentication부분에 JWT관련 부분을 읽어보면
우선 auth.module.ts에 JwtModule.register({...})를 하게됩니다.
그리고 jwt.strategy.ts란 파일을 따로 만들고 거기서는 JwtStrategy class를 작성하는데요.
두 부분다 secretKey와 expiration에 관한 설정을 하게되는데 여기서 이해가 잘 안갑니다.
JwtModule.register과 JwtStrategy는 각각 무슨 역할을 하는건가요?
두개의 secreKey와 expiration은 일치해야하는거 같은데 왜 그럼 저렇게 2개를 나누어 놓았는지 잘 모르겠습니다.
또.. 공식문서에 보면 JwtAuthGuard class를 만들때 그냥 AuthGuard('jwt')를 상속만 받고 끝내고
제가 실제로 테스트해봐도 JwtAuthGuard는 guard로써 잘 작동하긴하던데
여기서 AuthGuard('jwt')는 위에서 만든 JwtModule.register 또는 JwtStrategy class에 내부적으로 영향을 받나요?
아니면 그냥 nest에서 이미 AuthGuard라는 class를 잘 만들어놔서 그냥 상속해서 사용하기만 하면 되는건가요?
답변 1
1
윤상석
지식공유자
안녕하세요. 김정민님 :)
좋은 질문입니다!
비슷한 질문이 있어서 링크를 남깁니다. https://inf.run/295J
JwtRegister의 시크릿 키는 jwt 토큰을 인코딩할때, JwtStrategy의 시크릿 키는 jwt 토큰을 디코딩(인증)할때 사용된다고 생각하시면 됩니다!
관련 링크에서 원하는 답변을 얻지 못하셨다면 추가적인 질문으로 답변 남겨주세요!





.png?w=112)
JWT 암호/복호화 방식에 있어서 항상 대칭키로 하는 것은 아니기 때문에
저렇게 2개로 나누어놓은 것으로 보면되는건가요?