[베어랜드 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 했을때 ..
[시스템 아키텍처] 섹션 2: 시스템 요구 사항 및 아키텍처 드라이버
·
공부기록
1. 요구 사항 수집, 분석 및 분류시스템 요구 사항의 정의: 클라이언트를 위해 만들어야 할 항목을 파악하고 정리하는 과정입니다.대규모 시스템 설계의 특성:일반적인 요구 사항과의 차이: 메서드, 알고리즘, 클래스 등을 구현하는 일반적인 요구 사항과 달리, 대규모 시스템은 추상화 단계와 범위가 다르며, 설계해야 하는 솔루션도 다릅니다.추상화 수준: 추상화 단계가 높아질수록 문제 해결을 위한 자유도와 경우의 수가 다양해지며, 문제의 범위가 넓어져 시각적인 구현이 어려워집니다.기술적 제한: 기존 코드를 기반으로 메서드나 알고리즘을 수행할 경우, 입력 값과 결과 값을 알고 있어야 하고, 사용할 프로그래밍 언어에도 제한이 있습니다.2. 요구 사항의 모호성 및 그 원인모호성의 원인:엔지니어의 요구 사항 구상 부족:..
[시스템 아키텍처]
·
공부기록
소프트웨어 아키텍처 동기 (Motivation)소프트웨어 아키텍처 설계를 잘하면 시스템 구조가 커지더라도 성능 영향을 덜 받게 되고 기능을 추가할 때 확장성이 용이합니다. 반대로 아키텍처를 잘못 설계하게되면 성능 저하와 확장성의 문제가 생기고 이것을 개선하기위해 아키텍처를 다시 설계해야 하기 때문에 재설계 비용이 발생합니다.구조의 중요성: 우리가 개발하는 모든 소프트웨어는 특정한 구조를 가지고 있습니다. 시스템의 기능을 수행하도록 코드를 작성하는 방법은 무한하지만, 설계 방식에 따라 소프트웨어는 서로 다른 특성을 지니게 됩니다.성능과 규모 영향: 소프트웨어 아키텍처는 시스템의 성능과 규모에 직접적인 영향을 미칩니다. 예를 들어, 새 기능을 쉽게 추가할 수 있는지, 오류나 보안 공격에 대한 대응 방법 등에..
[electron] electron-forge Cannot find module
·
공부기록
node.js환경에서 실행되는 프로그램을 만들었는데 그것을 실행 파일로 만들어야해서 일렉트론을 사용했다. 파일을 패키징할때 일렉트론은 electron-forge를 추천하고 있었다. 그러다 생긴 App threw an error during load Error: Cannot find module './module' 에러 발생... 번들링 문제인거 같아서 계속 찾아보고 config 파일을 수정해봤지만 계속 오류가 발생했다..그러다가 로그를 찬찬히 뜯어봤더니 다음과 같은 경고문이 있었다.Vite의 Node API에서 CommonJS (CJS) 빌드가 더 이상 지원되지 않는다고 한다. Node.js 환경에서 require로 모듈을 로드해 사용하고 있었는데 CommonJS 방식을 ES Module 방식으로 모두 ..
[CS] 32 Bit / 64 Bit 차이
·
공부기록
32비트 환경 운영체제 64비트 환경 운영체제라는 말을 들어봤을거다. 32비트 환경 운영체제는 32비트 아키텍쳐에 대응되는 운영체제를 말하고, 64비트 환경 운영체제는 64비트 아키텍쳐에 대응되는 운영체제를 말한다. 그렇다면 32비트와 64비트 아키텍쳐란 뭘까? 그것을 알아보자.기본개념비트(Bit)란?컴퓨터가 처리하는 이산 데이터의 양을 나타내는 가장 작은 단위이며 0과 1 이진법을 사용해 나타낸다.32비트와 64비트 아키텍처란?32비트 아키텍쳐: 한 번에 32비트 데이터 양을 처리할 수 있는 CPU구조64비트 아키텍쳐: 한 번에 64비트 데이터 양을 처리할 수 있는 CPU구조메모 주소 지정 능력 32비트 시스템: 이론적으로 최대 4GB의 RAM을 지원한다. 이는 2^32개의 메모리 주소를 사용할 수 있..