Token 기반 인증방식을 복습했다. 토큰 기반 인증은 놀이공원에서 입장료를 내면 주는 토큰과 비슷하다. 구매할때 나이나 얼마나 사용할 수 있는지를 정한 다음에 토큰을 발행해준다. 이 토큰으로 이용할 때 놀이기구를 탈때마다 나이를 알려주거나 어떤 놀이기구를 얼마나 탈 수 있는지 말하지 않아도 토큰만 보여주면 알아서 인증이 된다. 로그인 할때 인증을 토큰을 받으면 그 후에 다른 요청을 보낼때 토큰을 같이 보낸다면 비교하지 않고 바로 응답을 받을 수 있다. JWT로 암호화가 되어 있는 토큰을 서버에는 저장하지 않고 클라이언트에 저장한다. 서버에는 이 토큰을 복호화할수 있는 키만 가지고 있고 사용자에 대한 정보는 서버에 가지고 있지 않다. 이전의 세션기반인증이 서버에 사용자의 session 아이디를 세션스토어에 저장하던것과는 다르게 토큰은 서버에 사용자 정보가 없어서 서버의 부담이 적다. 사용자가 가져온 토큰이 복호화가 가능한지만 체크한다. 그리고 사용자 정보를 서버가 갖지 않는다는 것은 서버가 늘어나도 부담이 되지 않는다는 큰 장점이 있다. 어디서 토큰을 만들어도 관계가 없다. 그 토큰을 만드는 키만 서버가 가지고 있으면 된다. 요즘 정말 많이 사용하고 있는 인증 방식이 토큰이다.
인증이 진행되는 과정을 보면서 authorization 코드는 바디로 보내고 토큰은 헤더를 통해보내고 이런 일련의 과정이 아직 다 들어오진 못했다. 전반적인 과정의 흐름을 이해하는데 집중했다. 이 부분은 쿠키와 세션을 같이 공부하다보니 아직 다 잡히지 않은 개념들이 섞여서 더 헷갈리는 것 같다. 익숙해져서 잘 구분 할 수 있게 공부해야겠다. 개념을 익히느라 알고리즘을 많이 못보고 있다. 시간이 부족한데 중요한 인증은 알아야겠고 부족한 것은 너무 많고 선택이 정말 어렵다. 알고리즘, 자료구조 잘하고 싶은데 얼마나 연습을 해야할까.. 그래도 계속 하는게 중요하다.