로그인 방식을 cookie와 session 방식만 알고 있었는데

이번에 spring boot + react로 된 프로젝트를 하게 되면서 jwt라는 걸 알게 되었다.

장단점이 있기 때문에 본인의 프로젝트의 환경을 보고 적절히 골라서 쓰면 된다.

💥로그인 방식은 왜 필요할까?

무상태(Stateless)

비 연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해 잊어버리게 된다. 따라서 요청을 할 때마다 서버에 연결을 해야한다.

HTTP의 이러한 특성으로 인해 'Stateless Protocol'이라고 불리기도 하며 웹사이트는 매 페이지에서 로그인이 되어있는 상태인지 확인하는 로그인 인증 방식이 필요하다.

🎡 session

session 방식이란?

방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 session이라고 한다.

웹서버는 이러한 각 단위에 세션 Id를 부여하고 같은 브라우저인지 구별한다.

브라우저를 닫거나 서버에서 이 (세션 Id가 들어있는)쿠키를 삭제했을때 삭제가 된다.

session을 사용한다고 해서 cookie를 안쓰는 것은 아니다. 다만 cookie에 중요 정보를 넣지 않았기 때문에 탈취 되더라도 해석해도 의미없는 문자열인 세션 Id가 들어있다.

session 방식의 flow

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c7e94569-f1f8-4b39-9b9f-1fa3cedde0fd/1_Hg1gUTXN5E3Nrku0jWCRow.png

  1. 클라이언트가 서버에게 로그인 정보가 들어있는 파라미터와 함께 login 요청을 한다.