Develop/Node.js

[Node.js]세션, JWT, OAuth의 회원인증 방법

dawonny 2022. 12. 26. 01:45
728x90
반응형

회원인증방법

1. session-based

아이디랑 패스워드로 로그인을 하면, 서버는 쿠키라는 걸 발행한다.

(쿠키 = 브라우저에 저장할 수 있는 긴 문자열)

이 쿠키에는 세션 아이디가 적혀있다. 

그럼 브라우저는 쿠키를 저장한다.

 

이제 로그인 후 활동을 하는데 예를 들어 마이페이지를 보여달라고하면, 

쿠키 데이터가 서버로 전송이 되는데, 쿠키에 적힌 세션 아이디를 가지고 (이 사람은 로그인을 했었다는 기록이 담긴)세션 데이터에서 찾아보는 것이다.

만약에 이 세션 데이터에 세션 아이디가 있다면, 마이페이지.html 을 보내줄 것이다.

 

2. token-based (JWT)(JSON Web Token)

로그인을 할 때 서버는 JSON Web Token 이라는 걸 발행한다.(긴 문자열임)

그럼 브라우저는 이 JWT 를 쿠키나 localstorage 같은 곳에 저장함.

 

만약 마이페이지를 보여달라고 하면 로그인을 했는지 판단해야겠지?

웹페이지가 서버한테 마이페이지를 보여달라고 요청할 때에 JWT 를 헤더에 포함해서 전송한다.

그럼 서버입장에서는 토큰이 같이 왔으니 토큰이 유효한지 검사를 한다.

만약 적합한 토큰이라면 마이페이지.html을 보내주도록 한다.

 

가장 큰 특징 : 서버가 메모리 같은 공간에 유저들 로그인 상태를 저장할 필요가 없다. -> 좀 더 RESTful

 

3. Open Authentication (OAuth)

다른 사이트의 프로필 정보를 가져옴(Facebook 이나 구글의 프로필 정보 등..)

 

소셜 로그인 버튼을 누르면 계정 정보를 제공하는 걸 동의하는지 뜬다.

동의를 누르면 유저의 소셜 계정 정보가 서버로 전송이 되면 

세션을 만들던지, 계정을 만들던지, JWT를 발급하던지.. 하면 된다.

 

장점 : 서버 입장에서 정보 다룰일 없으니 좋음

단점 : 예전에는 소셜로그인 이렇게 하는 곳 많았는데 소셜서비스가 사라지면 문제

 


회원 기능이 있다면

- 로그인 했을 때만 글쓰기가 가능해진다.

- 누가 글을 발행했는지 글쓴이를 저장할 수 있다.

- 마이페이지를 만들 수 있다.

728x90
반응형