인프런 커뮤니티 질문&답변
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
해결된 질문
작성
·
15
0
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유가 궁금합니다.
제가 스프링으로 개발했을 때는 role을 jwt에 담고 별도의 db 조회 없이 스프링 시큐리티에서 검증을 했어서요. 유저 엔티티가 필요하다면 서비스 레이어에서 조회를 하구요.
NestJs 현업에서 쓰이는 일반적인 패턴이 궁금합니다
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. 김산님.
BearerTokenGuard에서 DB를 조회하여 유저 정보를 불러오는 이유는 각 프레임워크의 특성과 보안 요구사항에 따라 다를 수 있습니다. 여러분이 구체적으로 궁금해하시는 부분에 대해 간단히 설명드리겠습니다.
JWT의 한계와 보안: JWT는 사용자를 인증하기 위한 수단으로, 일반적으로 토큰 자체에 중요한 정보를 담지 않습니다. 예를 들어, 롤(role)이나 간단한 식별자는 담을 수 있어도, 사용자의 모든 정보를 담기에는 안정성과 보안성이 부족합니다. 따라서, 구체적인 사용자 정보를 요구하는 상황에서는 DB 조회가 필요합니다.
유저 상태 및 정보의 최신성: BearerTokenGuard에서 함유된 유저 정보를 여러 번 사용하는 경우, 변동 가능성이 있는 정보라면 DB를 조회하여 최신 상태를 유지하는 것이 중요합니다. 예를 들어, 사용자가 계정을 비활성화 했거나, 롤이 변경되었을 경우, 최신 상태의 정보를 사용해야 하죠.
서비스 레이어에서의 역할: 스프링과 유사하게, 네스트JS에서도 복잡한 로직이나 변환 과정은 보통 서비스 레이어에 위임합니다. 그러나 JWT 방식이 가진 특성상, 서비스 레이어보다는 Guard에서 초기 인증 및 유효성 검증 작업을 처리하여 보안성을 유지하는 경우가 많습니다.
관련된 유사한 질문과 답변을 살펴보시면 도움이 될 것입니다. 예를 들어, access token DB 조회에 관해서라는 질문에서는 토큰 검증 과정에서의 데이터베이스 조회가 사용자 정보의 최신성 유지와 보안성 확보 측면에서 어떻게 사용되는지 설명합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





