Access Token 4

node.js express 엑세스 토큰과 리프레시 토큰

Access Token | Refresh Token Access Token과 Refresh Token은 유저가 로그인 했을 때 발급되며 이후 해당 유저가 누구인지에 대해 인증하는 용도로 활용됩니다. 가령 마이페이지에 접속할 경우 본인이 누구인지에 따라 그에 맞는 마이페이지를 보여줘야 하므로 이럴 때 사용되곘죠?? workflow 로그인 시 엑세스 토큰 발급 + 리프레시 토큰 발급 (각각) 두 토큰 모두 쿠키로 전달하되 리프레시토큰은 DB에 {리프레시 토큰: userId} 형태로 저장 로그인 이후 물품 구매, 마이페이지 접속 등 본인이 누구인지 파악하기 위해 쿠키에 접근 쿠키에 두 토큰이 존재하는지 먼저 확인 try, catch문으로 엑세스 토큰과 리프레시 토큰 검증 결과를 boolean으로 받는다. (i..

[nodejs 개인 프로젝트 3일 차] Access Token, Refresh Token

엑세스 토큰 검증과 리프레시 토큰을 활용한 엑세스 토큰 재발급 이전까지는 API 테스트 중 엑세스 토큰이 만료 되었을 때 재로그인을 통해 다시 발급받는 방식으로 테스트를 이어갔다. 하지만 추후에는 자동으로 엑세스 토큰 만료 시 자동으로 재발급 해주는 프로세스가 진행되어야 했다. 사실 실제 네이버와 같은 서비스를 이용할 때는 내가 언제 엑세스 토큰이 재발행되는지도 모르겠고, 추측하건데 특정 사이트에 로그인 후 그대로 방치한 상태에서 하루 또는 오랜 시간 지났을 때 리프레시 토큰까지도 만료되었기 때문에 재로그인을 요청받으며 로그인 창으로 강제이동하지 않았나 예상한다. 아무튼 엑세스 토큰의 재발급은 유저가 모르는 과정을 통해 재발급되는 프로세스여야 하지 않나 라는 생각에 아래와 같이 기능을 구현했다. 아래 기..

[nodejs 개인 프로젝트 2일 차] 로그인, 인증 기능 구현하기

로그인 기능 구현 Access Token 생성을 통해 로그인 유저에 한하여 포스팅 권한을 부여하는 방식을 구현해 보았다. // login.router.js const express = require('express'); const issuebombomCookie = require('jsonwebtoken'); const User = require('../schemas/user'); const loginRouter = express.Router(); loginRouter.post('/', async (req, res) => { const user = req.body; // 데이터베이스에서 유저 정보 조회 const findUser = await User.findOne({ userId: user.userId..

JWT 모듈을 통한 로그인, 인증기능 구축 (1)

로그인, 인증 기능 구축을 위한 기능 인증기능이 왜 필요할까? 서버가 클라이언트로부터 어떠한 정보를 요청받았을 때 해당 클라이언트가 누구냐에 따라 응답 데이터가 달라지거나 또는 제공해서는 안되는 보완적인 절차가 필요한 경우가 있기 떄문이다. 가령 A 유저에게 B 유저에 대한 개인정보, 플레이리스트, 결제내역 등을 보여줘서는 안되기 때문이다. 이러한 클라이언트 구분을 위해 로그인 시스템이 존재한다. 최초 로그인 시 클라이언트는 로그인 정보를 body에 담아 전달하면 서버는 그것을 내장 시크릿 키와 잘 버무려 토큰 이라는 hashing text를 생성하여 클라이언트에게 제공해준다. 이 토큰은 곧 인증서 역할을 한다. 그래서 클라이언트는 로그인한 후 해당 사이트에서 여러가지 요청(게시글 보기, 플레이리스트 보..