brunch

오늘의 삽질

JWT 은 어디에...

by 쿠우보이

JWT를 이용해서 토큰 기반의 인증을 구현하고 있다. 그냥 토큰 관련 예제는 이해가 가겠는데 이게 passport library 랑 같이 쓰려니 약간 복잡해지더라.

Screen Shot 2017-09-11 at 15.20.07.png

JWT로 회원 가입 및 로그인까진 모두 동작이 되는데, 로그인 시 유저가 가지고 있는 기본적인 메타데이터를 받고 싶었다. 예를 들어 유저가 속한 회사 정보를 로그인 이후 다시 유저 DB를 따로 뒤지지 않고 그냥 로그인하면서 가져오고 싶은 욕심이란 이야기다.

Screen Shot 2017-09-11 at 15.20.24.png

분명 미들웨어에서 토큰을 나만이 가지고 있는 보안키(secret_KEY)를 사용하여 풀어 유저 정보를 확인하고 return done(null, user)를 넘기는데 그다음 받는 node controller에서 받는 parameter는 req, res 밖에 없었다. 이게 뭐야...

그래서 따로 어딘가에 저장된 JWT 토큰을 찾아야 할 것 같았다. 그렇게 삽질을 하루 반...


역시 답은 가까운 곳에 있었다. 그냥 req.headers를 찍어보니 authorization이라는 key가 보였고.. 거기에 바로 그렇게 찾아 헤매던 우리의 사랑스러운 토큰이 숨어있었다. ('authorization' key 에 있던 이유는 알고보니 내가 프론트 리덕스 쪽에서 그러한 이름의 key로 저장한 이유였다)

Screen Shot 2017-09-11 at 15.17.18.png 백만년전부터 난 원래 여기에 있었다 멍충아


삽질을 하루 더 하지 않아 다행이다. 긍정적으로 생각하자!

비록 jwt 라이브러리를 이용해서 decode라는 함수를 다시 사용해야 했지만, 당장은 일단 payload를 받아 쓸 수 있게 되었다. 이제 저 payload에 로그인 시 바로 써먹을 수 있는 정보들을 넣어놓을 수 있게 되었다. 여기에는 SECRET_KEY가 없으면 볼 수 없는 정보이기에, 민감한 내용들을 다 저장해놓을 수 있다. 내 국민은행 통장의 비밀번호라든지, 우리 집 고양이의 몸무게라든지 하여간 뭐든 넣어놓을 수 있다. 기분이 상쾌하므로 잠시 바람을 쐬고 와야겠다.



keyword
매거진의 이전글조심해야 하는 삽질