컴퓨터 지식 정리

SESSION/TOKEN/JWT/COOKIE/ServerlessSession

another problem 2023. 4. 7. 00:39

SESSION/TOKEN/JWT/COOKIE/ServerlessSession 비교

session
{id:1, username..} -> encryt -> adfadsfasd(암호문 브라우저 session등록) 
-> decrypt -> {id:1, username..}(백앤드에서 암호문 해독하여 user정보 활용)
1 로그인하면 서버에서 세션DB에 유저정보를 생성함 
2. 세션DB에서는 유저정보를 Id별로 저장하고 그 id를 쿠키로 브라우저에 보냄 
3. 브라우저에서 페이지를 이동할 때마다 세션ID를 가진 쿠키를 서버에 보냄 
4. 서버는 브라우저로부터 받은 세션ID쿠키를 세션디비에 조회를 하여 유저정보를 파악함 
* 브라우저에서는 세션정보가 암호화 되어 유저가 볼 수 없음 
* 이용하는 경우 현재 로그인한 유저들의 모든 세션ID를 DB에 저장해야함 
* 쿠키는 앱에서 사용 불가능함 

token
1. 브라우저에 토큰(그냥 string임)을 보냄(쿠키를 사용불가능한 앱에서 token이용)
2. 서버는 받은 토큰으로 세션DB에서 유저를 조회함 

jwt token
signature:abc -> {id:1, username.., signature:abc} ->
{id:1, username.., signature:abc} -> check signature -> {id:1, username..}
* jwt토큰은 유저가 로그인할 때 세션DB를 사용하지 않으므로 사인된 정보를 string으로 브라우저에 보냄 
브라우저 사인된 정보(토큰)를 가지고 있다가 필요할 때마다 서버에 보냄
서버에서 사인된 정보를 받으면 사인이 유효한지 체크하고 유저를 인증
* 서버는 유저를 인증하는데 필요한 정보를 토큰에 저장하여 브라우저에 보내고 
* 브라우저가 request할 때 함께 보낸 토큰을 받을 때 해당 토큰이 유요한지 검증하고 response함 

cookie
브라우저에서 로그인 정보 서버에 전달 -> 서버에서 브라우저에 쿠키를 전달 
-> 서버는 브라우저에서 일부 계속 가지고 있어야하는 정보는 쿠키로 저장하도록 함 ->
이후 브라우저에서 서버로 정보를 요청할 때 쿠키와 함께 보내서 인가를 하거나 나에게 필요한 정보만 받을 수 있음

 

serverless session

serverless session은 세션DB를 사용하지 않으며 그냥 유저정보를 쿠키를 통해 암호화하 브라우저 쿠키에 등록

사실상 serverless session은 쿠키방식에 가까움 

 iron-session은 암호화된 JWT랑 비슷하지만 
 
 차이점으로
 브라우저에 저장된 JWT는 BE에서 조정하지 못하지만,  
 iron-session은 쿠키형식으로 브라우저에 있더라도 BE에서 삭제할 수 있음.