본문 바로가기

개발

[Node.js] JWT 사용하기 인증 방식 정리하기 1. Session 기반 인증 방식 2. JWT 기반 인증 방식 3. OAuth 2.0 기반 인증 방식 인증 방식 구현하기 [Node.js] express session 사용하기 [Node.js] passport session 사용하기 [Node.js] JWT 사용하기 [Node.js] passport Google OAuth 2.0 로그인 사용하기 1. 서론 지난 포스팅에서는 JWT 기반 인증 방식에 대해 알아봤다. 이번엔 Node.js로 JWT를 직접 구현해보도록 하자. 구현 방법은 어렵지 않으나 이 포스팅에서는 jsonwebtoken을 사용한 토큰의 발급과 만료 기간 설정 등 기본 개념에 대한 구현만 하도록 하겠다. 운영하려는 서비스마다 JWT를 사용하는 방식이나 메모리 적재 여부.. 더보기
[Node.js] express session 사용하기 인증 방식 정리하기 1. Session 기반 인증 방식 2. JWT 기반 인증 방식 3. OAuth 2.0 기반 인증 방식 인증 방식 구현하기 [Node.js] express session 사용하기 [Node.js] passport session 사용하기 [Node.js] JWT 사용하기 [Node.js] passport Google OAuth 2.0 로그인 사용하기 1. 서론 지난 포스팅에서 Session 인증 방식에 대해서 알아봤다. 그렇다면 Node.js로 어떻게 Session 인증 방식을 구현할 수 있을까? 이번 포스팅에서는 Session의 저장 방식 3가지(메모리, 디스크 또는 DB) 모두를 간단하게 구현해보도록 하겠다. 만약 Session 인증 방식에 대한 기본 개념이 명확하지 않다면 지난 포.. 더보기
2. JWT 기반 인증 방식 인증 방식 정리하기 1. Session 기반 인증 방식 2. JWT 기반 인증 방식 3. OAuth 2.0 기반 인증 방식 인증 방식 구현하기 [Node.js] express session 사용하기 [Node.js] passport session 사용하기 [Node.js] JWT 사용하기 [Node.js] passport Google OAuth 2.0 로그인 사용하기 1. 서론 지난 포스팅에서는 Session 기반 인증 방식에 대해서 알아봤다. Session 방식에 여러 가지 장점이 있지만, 반대로 단점도 있었다. 그중 Session 기반 인증 방식의 단점인 확장성, CORS 방식 사용 시 쿠키 및 세션 관리의 어려움 등에 대한 해결 방법으로 제시된 인증 방식인 JWT에 대해 알아보도록 하자. 2. 간단.. 더보기
1. Session 기반 인증 방식 인증 방식 정리하기 1. Session 기반 인증 방식 2. JWT 기반 인증 방식 3. OAuth 2.0 기반 인증 방식 인증 방식 구현하기 [Node.js] express session 사용하기 [Node.js] passport session 사용하기 [Node.js] JWT 사용하기 [Node.js] passport Google OAuth 2.0 로그인 사용하기 1. 서론 일반적으로 웹 서버는 HTTP. 즉, stateless 프로토콜을 사용하기 때문에 웹사이트에서 사용자가 로그인한 회원인지에 대한 인증을 관리하는 방안이 필요하다. 한 번 로그인한 사용자가 버튼 하나를 누를 때마다 로그인을 다시 하게 된다면 어떤 일이 벌어질까? 아마 아무도 그 사이트를 사용하려 하지 않을 것이다. 이때 로그인한 사.. 더보기
[Docker] ReactJS Dockerizing하기 1. 서론 개발 중 ReactJS를 dockerize 한 적이 있다. Dockerfile과 docker-compose.yml 파일로 dockerize를 했는 데 docker-compose.yml 작성 중 ReactJS가 제대로 작동하지 않는 것을 확인하고 무슨 문제인가 한참을 찾았던 경험이 있다. 따라서, 나와 비슷한 문제를 겪고 있는 사람들을 위해 이 포스팅을 작성한다. 결론부터 말하자면 문제는 tty와 stdin_open 값을 true로 줘야한다는 점이다. docker-compose.yml에서는 이 두 값을 true로 설정하면 되고, Dockerfile만을 사용해서 build 후 run할 때는 -it 를 붙여주면 된다. 이유는 ReactJS가 실행될 때 terminal과 stdin을 사용하기 때문이다.. 더보기
[JavaScript] Date 객체 사용하기 1. 서론 지난 포스팅에서는 node.js에서 moment.js 모듈을 사용하는 방법에 대해서 소개했다. 이번에는 JavaScript의 기본 내장 객체인 Date 객체에 대해 알아보도록 하자. 2. Date 객체 사용하기 2-1. 현재 날짜: new Date() let now = new Date(); console.log(now); // Sat Jan 30 12:24:00 GMT+0900 (대한민국 표준시) 2-2. 특정 날짜 지정 // Sat Jan 30 03:24:00 GMT+0900 (대한민국 표준시) console.log(new Date('January 30, 2021 03:24:00')); console.log(new Date('20201-01-30T03:24:00')); console.log(.. 더보기
[Node.js] express static folder 지정하기 1. 서론 처음 내가 Node.js로 웹사이트를 개발할 때 로컬에서 html 파일을 브라우저로 켰을 때는 css, js, image 파일들이 모두 제대로 적용됐는 데, node.js로 html 파일을 구동하면 아무것도 적용되지 않는 것이 너무 당황스러웠다. 뭔가 잘못된 것인가 하다가 로컬에서 html 파일을 구동할 때의 static files(css, js, image 등)와의 상대 경로와 node.js 서버를 사용하여 구동할 때의 상대 경로가 전혀 다르다는 것을 인지했다. 이 것을 해결하기 위해 static folder를 지정할 수 있고, 서버에서는 해당 static folder에 접근해서 static files를 가져온다. 따라서, html 파일을 작성할 때도 해당 url로 static files(c.. 더보기
[Node.js] express cors 사용하기 1. 서론 리버스 프록시 서버로 NGINX를 두고 한 워크스테이션에서 Swagger와 node.js 서버를 함께 구동한 적이 있다. Swagger의 포트를 8085로 지정하고 node.js 서버는 443번으로 지정했는 데, CORS 에러가 발생해서 Swagger 페이지에서 샘플로 작성한 request를 node.js로 보낼 수 없었다. 그때 처음으로 CORS가 무엇인지 알게 됐다. 따라서, 해당 내용을 정리해두기 위해 CORS란 무엇인지, 그리고 node.js에서 문제를 해결하기 위해 어떻게 해야 하는지 포스팅을 작성하겠다. 2. CORS(Cross-Origin Resource Sharing)란 무엇인가? CORS란 자신이 속하지 않은 다른 도메인, 다른 프로토콜, 혹은 다른 포트에 있는 리소스를 요청하.. 더보기