[베어랜드 Auth 시스템] 2 - JWT와 Opaque Token 그리고 토큰 저장방식
·
공부기록
이전 포스트 [베어랜드 Auth 시스템] 1 - 쿠키와 세션 그리고 JWT쿠키와 세션, 그리고 토큰 기반 인증 시스템 구현하기이 글은 최근 프로젝트를 진행하며 Auth 시스템 구현에 대해 고민하고 적용했던 과정을 쿠키와 세션부터 토큰 기반 인증까지 정리한 첫 번째bearn-soo.tistory.comRefresh Token에 JWT가 필요할까?Refresh Token을 서버에서 관리할 때, JWT처럼 정보를 포함하는 토큰을 사용할 필요가 있을까요? JWT는 자체적으로 정보를 담고 있는 "상태가 있는" 특성을 가지고 있습니다. 그러나 우리는 이미 Refresh Token의 상태를 서버 데이터베이스에서 관리하고 있습니다.베어랜드 예시로 설명하면JWT 형태의 발급증은 "이 발급증은 A 손님의 것이며, 3개월간..
[베어랜드 Auth 시스템] 1 - 쿠키와 세션 그리고 JWT
·
공부기록
쿠키와 세션, 그리고 토큰 기반 인증 시스템 구현하기이 글은 최근 프로젝트를 진행하며 Auth 시스템 구현에 대해 고민하고 적용했던 과정을 쿠키와 세션부터 토큰 기반 인증까지 정리한 첫 번째 글입니다. 그동안 단순히 사용만 했던 개념들을 되짚어보며, 각 방식이 왜 필요했고, 어떤 한계를 가지고 있는지 살펴보려 합니다. 또한, 직접 구현하면서 고민했던 부분도 함께 정리해 보겠습니다.실무 경험은 없지만, 공부하며 정리한 내용이니 부족한 부분이 있을 수도 있습니다. 보완할 점이나 추가로 살펴보면 좋을 부분이 있다면 피드백 부탁드립니다. 더 깊이 공부해야 할 방향도 함께 조언해 주시면 감사하겠습니다! 쿠키와 세션 기반 인증 - 베어랜드 입장 예시인증 과정을 이해하기 위해 '베어랜드(놀이공원)'라는 예시를 들어보..
[트러블 슈팅] Cannot find module '...../bcrypt/lib/binding/napi-v3/bcrypt_lib.node'
·
공부기록
문제 상황로컬 환경에서만 실행했던 NestJS 서버를 AWS Lightshail 인스턴스를 사용해 배포하던중 다음과 같은 오류가 발생했다.`Cannot find module '...../bcrypt/lib/binding/napi-v3/bcrypt_lib.node'`Amazone Linux 2023 운영체제를 사용하고 Node.js 18버전을 사용했다.발생 환경OS: Amazon Linux 2023Node.js v18bcrypt 5.11 원인해당 모듈을 찾을 수 없다는 문제를 확인하기위해 경로를 찾아 들어가봤더니 해당 모듈안에는 lib 폴더가 존재하지 않았다.nodemodules와 pnpm-lock.yaml 파일을 지우고 pnpm install을 했지만 여전히 문제가 발생했다.모듈을 install 했을때 ..
[Node.js 교과서] 섹션 16 - 서버리스 노드 개발
·
Node.js
AWS S3로컬 저장소의 한계업로드된 이미지가 서버의 uploads 폴더에 저장되므로, 다른 서버에 접속한 사용자들은 이미지를 볼 수 없다여러 대의 서버가 동작하는 환경에서는 이미지 접근에 제약이 생긴다EC2는 24시간 요금을 지불해야 하며, 항상 서버를 실행 상태로 유지해야 한다.AWS S3 사용S3 버킷 생성AWS Management Console에 로그인 후 S3 서비스를 선택버킷 만들기 버튼을 클릭하고, 고유한 버킷 이름과 리전을 설정퍼블릭 액세스 차단 설정은 필요한 경우 해제하고, 정책 설정{ "Version":"2012-10-17", "Statement": [ { "Sid":"AddPerm", "Effect": "Allow", "Principal": "*", "Action": ..
[Node.js 교과서]섹션 15 - AWS에 배포해보기
·
Node.js
배포 전 준비사항morganmorgan은 HTTP 요청 로그를 기록하는 미들웨어배포 환경과 개발 환경에 따라 로깅 포맷을 분리하여 설정설치 및 설정:morgan 설치npm install morgan`app.js`에서 환경별 로깅 설정const morgan = require("morgan");if (process.env.NODE_ENV === "production") { app.use(morgan("combined")); // 배포 환경: 자세한 로그} else { app.use(morgan("dev")); // 개발 환경: 간단한 로그}express-sessionexpress-session은 사용자 세션 관리를 위한 미들웨어배포 환경에서는 보안을 위해 HTTPS 설정을 추가하고, Redis를 사용해 ..
[모던자바스크립트 Deep Dive] 19장 프로토타입 1
·
Javascript
프로토타입자바스크킵트는 명령형, 함수형 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패더다임 프로그래밍이다.자바스크립트를 이루고 있는 거의 모든것이 객체다.객체지향 프로그래밍특징이나 성질을 나타내는것을 속성이라고 한다.다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라고 한다.속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 한다.const circle = { radius: 5, // 원의 상태를 나타내는 데이터//-------원의 지름, 둘레, 넓이를 구하는동작-------------------- getDiamerter() { return 2 * this.radius; }, getPerimeter() { return 2 * Math.P..
[Node.js 교과서] 섹션 14- CLI 프로그램 만들기
·
Node.js
간단한 콘솔 명령어 만들기package.json{ "name": "node-cli", "version": "0.0.1", "description": "nodejs cli program", "main": "index.js", ... "bin": { "cli": "./index.js" },}index.js#!/usr/bin/env nodeconsole.log('Hello CLI', process.argv);`#!/usr/bin/env node`는 맥과 리눅스에서 /usr/bin/env에 등록된 node 명령어로 이 파일을 실행하라는 의미다.process.argv는 실행한 명령어의 인자들을 볼 수 있다.해당 모듈 전역 설치npx i -g모듈 실행npx cliCLI로 입력받기index.js#!..
[Node.js 교과서] 섹션 13- 실시간 경매 시스템 만들기
·
Node.js
SSEServer Sent Event는 클라이언트에서 요청 없이도 언제든지 서버가 새로운 데이터를 보내는 것이 가능한 방식을 말한다. 경매 시스템 같은 경우  클라이언트에서 경매가 언제 종료되는지 언제 경매가가 업데이트되는지 요청을 보내는 것이 아닌 서버에서 SSE 방식으로 정보를 보내주고 클라이언트는 응답을 받기만하면 된다.sse 모듈 설치npm i ssesse.jsconst SSE = require("sse");module.exports = (server) => { const sse = new SSE(server); sse.on("connection", (client) => { setInterval(() => { client.send(Date.now().toString()); ..