첫번째 연합동아리 - mini project

1 minute read

first cooperation


그렇게 대규모라고 할 수는 없지만, 연합동아리에 들어와서 처음으로 모르는 사람들과 아이디어 회의를 하고 기획팀, 디자인팀, 개발팀이 서로 협력하며 소통하는 경험이었다.

교내에서는 모두 개발자 역할을 수행하며 프로젝트를 진행했지만, 전문적인 기획자와 디자이너분들과 함께 협업하니 뭔가 새로운 기분이 들며 매우 재밌었다.

MVC 모델을 접목하며 기본적인 회원가입, 로그인, DB와의 연계 등 nodejs 만의 여러 모듈을 사용하며 restful api 프로젝트를 진행하였다.

물론 지금 보면 refactoring 도 안되어있는 엉망인 코드지만 그래도 내가 서버 개발자로 발돋움 할 수 있는 좋은 경험이었다고 생각한다.

그 중에 기억에 남는 코드는 로그인 및 회원 인증 기술인 JWT token이다.




JWT token

JWT token은 Json Web Token의 줄임말로 웹 표준(RFC 7519)으로서 JSON 객체를 이용하여 정보를 안전하게 전달해주는 방법이다.

jwt token의 대표 기능
  • 회원 인증
  • 정보 전달




유저가 로그인을 하면 서버가 유저의 회원정보와 암호화 키를 기반으로 한 암호화된 token을 유저에게 제공한다. 유저는 그 토큰을 가지고 있다가 서버에 요청을 할 때 마다 해당 토큰을 서버에 넘겨준다. 서버는 토큰이 유효하고 인증되었는지 확인하고 이를 처리한다.

그렇기 때문에 서버는 유저의 세션을 유지할 필요가 없고, 또 유저가 로그인을 했는지 안했는지 확인할 필요가 없다. 단지 토큰만 신경쓰면 되는 방식이기 때문에 서버의 자원을 아낄 수 있다.

나는 처음에 로그인을 할 때 토큰을 지급하고, 추후에 인증해야 하는 라우터에서 미들웨어로 처리하였다.

token 발급



유저가 회원가입을 할 때 bcryptjs 모듈로 비밀번호를 암호화한다.

로그인을 할때 유저가 입력한 비밀번호와 암호화된 비밀번호를 bcryptjs 모듈의 compare 함수를 통해 비교한다.

일치한다면 jsonwebtoken 모듈의 sign함수를 통해 token을 지급한다. 만기 시간은 3시간으로 설정한다.

미들웨어로 사용자 인증 처리



유저가 사용자 인증을 하려고 요청을 할 때 header의 authorization에 token을 담아서 서버로 보내준다.

서버에서는 jsonwebtoken 모듈의 verify함수를 통해 일치하는지 확인한다.

출처

github - token 발급

github - 사용자 인증 처리

Categories:

Updated: