# Token , Session

프론트 입장에서 생각해보자.  
Session과 Token 모두 베이스는 쿠키저장이기 때문에 프론트에서는 차이가 모호하다고 할 수 있다.  
이는 동작 방식을 보면 알수 있다.

#### Token 의 동작방식

1. 로그인시 서버에서 token을 받아옴
    
2. 서버에서 받아온 token이 브라우저에 저장됨 ( persistence cookie )
    
3. 요청 시 헤더에 저장해 놓은 쿠키를 껴서 보내줌
    
4. 서버측에서 쿠키를 보고 판단해 알맞을 경우 response를 보내줌
    

#### Session 의 동작방식

1. 로그인시 서버에서 세션ID를 받아옴
    
2. 클라이언트 측에 받아온 세션 ID 가 브라우저에 저장됨 ( session cookie )
    
3. 요청 시 헤더에 저장해놓은 sessionId 껴서 보내줌
    
4. 서버측에서 sessionId를 보고 저장소 에서 비교분석해본 뒤 알맞을 경우 response 보내줌
    

token 과 sessionId 단어차이를 빼면 거의 동작방식이 비슷해 보인다.  
특징을 잘 고려해서 구분하여 사용하도록 하자. 요즘 대세는 jwt 라고함,,,

#### Session 방식 장단점

* 장점
    
    * 보안 부분에서 좋다 ( 유저가 받을 수 있는건 sessionId 가 끝. 보안 측면에서 좋아보인다. 하지만 절대적인건 없다. ex) 세션하이재킹 등 )
        
* 단점
    
    * 서버메모리를 사용해서 관리해야하기 때문에 서버에 부하가 걸린다.
        

#### persistence cookie 특징

* 디스크에 쿠키 저장 =&gt; 브라우저를 닫아도 남아있음
    

#### session cookie 특징

* 메모리에 쿠키 저장 =&gt; 브라우저를 닫으면 휘발됨
    

#### JWT Token

* header, payload, signature 세가지로 이루어져있다.
    
* header : 토큰의 타입과 어떤 알고리즘을 쓸거야 ? ex) hs256
    
* payload : {name : value} 형태의 정보를 갖고있는 부분. body라고 할수 있음
    
* signature : secretKey 를 담고 있음 ( 약속한 secret key 를 이용해 검증 가능 )
