세션 인증 방식

- 사용자가 로그인을 한다.
- 서버에서 계정 정보를 읽고 사용자를 확인 후, 사용자의 고유한 ID값을 부여하여 세션 저장소(주로 메모리)에 저장한 후, 이와 연결되는 세션ID를 발행한다.
- 사용자는 서버에서 해당 세션ID를 받아 쿠키에 저장을 한 후, 인증이 필요한 요청 마다 쿠키를 헤더에 실어 보낸다.
- 서버에서는 쿠키를 받아 세션 저장소에서 대조를 한 후 대응되는 정보를 가져온다.
- 인증이 완료되고 서버는 사용자에 맞는 데이터를 보내 준다.
- 세션은 서버에서 가지고 있는 정보이며 쿠키는 사용자에게 발급된 세션을 열기 위한 열쇠(SESSION ID)를 의미 한다.
단점
- 서버에서 세션 저장소(메모리)를 사용 하기 때문에 추가적인 저장 공간을 필요로 하게 되고 부하가 높아진다.
토큰 인증 방식 (ft. JWT)
JWT는 Json Web Token의 약자로 인증에 필요한 정보들을 암호화 시킨 토큰을 뜻하고 아래와 같은 형식으로 되어 있다.
Encoded Header + "." + Encoded Payload + "." + Verify Signature
header, payload는 인코딩(16진수로 변경)될 뿐, 따로 암호화 하지는 않는다. 따라서 누구나 확인할 수 있기 때문에 유저의 중요한 정보(비밀번호, 개인정보)가 들어 가서는 안된다.
하지만 verify signature는 secret key를 알지 못하면 복호화 할 수 없기 때문에 JWT를 발행한 서버 만이 알 수 있다.

- 사용자가 로그인을 한다.
- 계정 정보를 읽어 사용자를 확인 후, 사용자의 기본 정보와 유효 기간을 설정하고 secret key를 이용해서 암호화한 JWT 토큰 만든다.