• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

jwt와 passport 연동에 대해서 질문드립니다.

18.10.30 19:14 작성 조회수 174

0

제가 현재 프로젝트로 웹서버(서버 렌더링 없이)를 만들고 있는데,

jwt를 이용해서 passport 인증으로 로그인 서비스를 구현하고 싶어요.

강좌에서는 그런데 jwt와 passport를 한서버에서 같이 구현한 강의가 없어서 질문드립니다.

제가 각 개념에 대해 이해가 부족한 탓인지,

일단 jwt 토큰을 사용자에게 json으로 발급해주고 보내주는 것까진 구현했는데,

passport 개념이 들어오니 감이 안잡히네요.

구글링해서 jwt passport 연동에 관한 게시글을 살펴보았는데, 영문이기도 하고,

이해하기 힘든 부분이 많은 것 같습니다.

jwt를 이용해 passport 인증 기능을 구현한다면 어떤 흐름으로 코딩을 해야할지

차근차근 명확하게 설명해주실 수 있으신가요?? ㅠㅠ

답변 3

·

답변을 작성해보세요.

0

JWT는 보통 세션과 함께 쓰이지는 않습니다. JWT 내부에 든 정보들이 세션과 중복되어 버리거든요. 그래서 세션을 쓰지 않기 위해서 JWT를 많이 씁니다.

클라이언트에서 요청을 보낼 때 headers에 Authorization 키에 JWT 토큰을 넣어서 보내시면 서버에서 req.get('Authorization')으로 받을 수 있습니다. passport와의 연동은 passport-jwt나 각종 소셜 로그인의 jwt 버전을 쓰셔야 세션을 사용하지 않습니다.

0

박봉균님의 프로필

박봉균

질문자

2018.10.30

제가 생각한 구상으로는 jwt를 클라이언트가 발급받으면 클라이언트가 직접 세션에 jwt를 저장 시킨 후,

요청을 보낼 때마다 session에 있는 jwt를 헤더에 첨부시켜서 보내는 것으로 이해했습니다.

저는 그래서 passport를 통해 클라이언트가 userid,password만 보내면, 클라이언트 쪽에서 햇던,

즉 클라이언트가 직접 세션에 jwt를 저장시키고, 요청을 보낼 때마다 req.header에 토큰을 첨부해서 보내는 작업을

서버 측에서 자동으로 세션을 만들고, req.headr에 토큰을 넣어줘서 미들웨어들에게 전달되게 하는 방법이 있을까요??

passport를 사용하고 싶은 이유는 이것들은 정책화해서, 로컬 로그인과 sns 로그인까지 구현하고 싶어서 입니다.

0

JWT는 그냥 토큰일 뿐이고요. passport와 같이 사용하시려면 뚜렷한 이유가 있어야 합니다.

예를 들어 OAuth2 방식을 구현하겠다 이러한 이유요.

이러한 이유를 알려주시지 않으면 단순히 JWT 토큰으로 무엇을 인증하고 처리하려고 하시는지 파악이 힘듭니다.

passport와 같이 사용하시려면 npm 패키지는 passport-jwt같은 것 보시면 됩니다.