작성
·
441
1
소개해주시는 nestjs 문서에서는, 로그인시의 Authentication을 passport-local strategy를 통해 구현하고 있습니다.
다만 강사님 강의에서는 이를 사용하지 않고, authService의 jwtLogin으로만 처리합니다.
이 부분에서 질문이 있습니다.
제가 느끼기에, 굳이 passport local 전략은 필요하지 않다고 생각합니다. 공식 문서에서 굳이 이를 사용한 이유가 있을까요?
passport local은 로그인 때만 사용되는 전략인가요? 그러면 jwt등의 사용자 접속을 유지시키는 전략과는 다르다고 봐야하나요?
그것(2번)이 아니고, passport local도 jwt 전략과 같은 개념부류에 속한다면, stateful혹은 stateless한 방식으로 사용자 접속을 유지시켜야할텐데 이를 어떻게 처리하는지 궁금합니다.
좋은 강의 감사합니다.
답변 3
0
3번 질문에 대한 답변도 2번 질문 답변에 포함이 되어있는 것 같습니다. passport.js를 이용한 인증 방식에 대한 생활코딩의 좋은 강의가 있어 아래에 링크 첨부합니다.
https://opentutorials.org/course/3402
더 궁금한 사항이 있으시다면 새로운 질문글로 작성해주시면 답변해드리도록 하겠습니다. 추석에도 강의 들으시며 공부하시는 열정이 멋있숩니다..! 항상 응원하겠습니다 🦦
0
passport local은 로그인 때만 사용되는 전략인가요? 그러면 jwt등의 사용자 접속을 유지시키는 전략과는 다르다고 봐야하나요?
그렇지 않습니다. passport는 여러 인증 방식과, 유저 정보를 세션에 저장, 해당 세션을 판별하는 기능까지 제공합니다. passport의 인증을 통과한다면 passport.serializeUser 를 이용하여 해당 유저 정보를 세션에 저장, 접속 상태를 유지할 때는 passport.deserializeUser를 통해 request.user의 정보를 받을 수 있습니다. 만약 request.User가 없다면 이는 로그인이 되지 않은 상태, 혹은 로그인이 만료된 상태를 의미하며, 이와 반대로 request.User가 있다면 로그인이 되어있는 상태를 의미합니다.
이는 jwt를 이용하여 쿠키에 token 값을 저장하고, token 값을 검증하며 접속 상태를 판별하는 JWT와 크게 다르지 않습니다.
0
안녕하세요 Anthony Jo님.
작성해주신 질문에 대한 답변 남깁니다.
제가 느끼기에, 굳이 passport local 전략은 필요하지 않다고 생각합니다. 공식 문서에서 굳이 이를 사용한 이유가 있을까요?
우선, Passport.js 는 Node.js를 위한 인증 미들웨어입니다. 아이디와 비밀번호를 사용해 로그인하는 방식을 포함해서, 구글, 페이스북, 트위터 등을 통한 여러가지 인증 방법을 제공합니다. 공식 문서에서 passport를 사용하여 예제를 작성한 정확한 이유는 알 수 없겠지만, 저의 개인적인 예상으로는 다음과 같은 이유일 것 같습니다.
다른 인증방식으로 변경하는데에 있어서의 편의성 : passport.js에서는 500개가 넘는 인증방식을 제공하고 있습니다. 만약 아이디와 비밀번호를 통해 인증하고 있던 서비스에서 구글 로그인으로 변경을 할 때에, passport.js의 strategy를 변경하고 코드를 조금만 수정해주면 로직의 큰 변화 없이 구글 로그인을 구현할 수 있습니다. 만일 passport.js를 사용하지 않았을 때에 구글 로그인으로 변경을 해야한다면, 인증 부분을 모두 뜯어고쳐야 합니다.
많은 서비스에서 이용하고 있는 라이브러리 : 공식 문서에도 작성되어 있듯이, 수많은 서비스에서 passport.js를 사용하여 인증 쪽을 개발하였습니다. 그런만큼, 많이 사용되고 있는 방식으로 예제를 작성하는게 조금 더 의미가 있지 않았을까 생각합니다.
덧붙여서, 해당 강의에서 passport local을 사용하지 않고 JWT를 사용한 인증방식을 사용한 이유는, passport local의 근본적인 원리는 JWT를 사용한 인증방식과 동일합니다. passport.js는 이 과정을 조금 더 간편하게 개발할 수 있도록 개발된 라이브러리이며, 처음부터 이런 라이브러리를 사용하는 것보다는 기본적인 인증 원리를 이해하는 것이 수강생 분들께 조금 더 유익할 것 같아서 강의를 이렇게 구성하게 되었습니다.
다음 질문들은 아래 글에 답변하겠습니다.
추석에도 답변해주셔서 감사합니다. 행복한 명절 보내시기 바랍니다. 우선 생활코딩의 강의로 passport에 대하여 추가적으로 공부해보고, 추가 질문이 생기면 질문하도록 하겠습니다.
감사합니다.