10월 29-30일 인증과 관련된 세션을 진행하고있다. 먼저 순한맛(...)으로 mini-auth-server스프린트를 진행했다.
스프린트는 http.createServer로 작성된 서버에서 res에 쿠키를 어떻게 설정해서 보내는지, 보낸 쿠키가 세션과 일치하는 작업을 어떻게하면 확인할 수 있는지 확인하는 방향으로 진행되었다.
Authentication
서버는 클라이언트에게 HTTP 요청 헤더에 인증 정보를 포함하여 보낸다. HTML 서버 요청을 통해서 쿠키를 보내고자 하면 다음과 같은 방법으로 보낼 수 있다.
#1. res.writeHead(200,{"Set-Cookie:{"키=값"}) 다중 헤더값을 설정할 때
#2. res.setHeader('Set-Cookie', '키=값') 단일 헤더를 설정할 때
Set-Cookie 옵션들
Cookie
그렇다면, 쿠키는 무엇인가?
- 쿠키는 클라이언트 가 관리하는 정보로, 사용자의 특정 정보를 브라우저 메모리에 관리하는 역할을 한다.
- 서버는 사용자에 따라 개별 쿠키를 발급하는데 이 쿠키에는 사용자를 식별할 수 있는 개인정보가 담겨있다.
- 따라서 사용자는 이 쿠키를 통해서 서버와 소통할시 본인에 대한 정보를 인증할 수 있다.
- 쿠키는 인증을 위해 사용자의 정보를 담고 있기 때문에, 반드시 주기적으로 삭제할 필요가 있다.
Session
쿠키가 클라이언트가 저장하는 사용자의 정보라면, 세션은 서버가 관리하는 사용자의 정보다.
- 세션은 요청이 들어왔을때, 쿠키가 세션이 가지고 있는 사용자의 세션id를 가지고 있는지를 확인한다.
- 서버는 클라이언트의 요청 쿠키에 담긴 세션 id를 세션 스토리지와 비교해 인증을 판단한다.
Token
토큰은 인증을 위해 사용되는 암호화된 문자열이다.
- 토큰또한 세션과 마찬가지로 사용자가 보내는 요청이다.
- 다만, 유저의 인증 정보를 서버나 세션에 담아두지 않는다.
- 유저의 활성화 여부를 신경쓰지 않고 넘겨진 요청에 담겨진 Token의 정합성만을 확인한다
- (서버 운영의 효율 측면으로 더 좋다)
**아래는 내가 이해한대로 끄적인 간단한 그림**
