토큰기반 인증의 필요성
세션기반 인증은 서버 또는 데이터베이스에 유저 정보를 담아서 인증해주는 방식 이었음.
서버는 유저가 민감하고 제한된 정보를 요청 할 때마다 해당 유저에게 정보를 줘도 괜찮은지 확인하기 위해서 가지고 있는 세션값과 일치 하는 지 확인한다.
그러나 매번 요청 시 마다 데이터베이스를 살펴봐야 하는 부담이 작용.
이 부담을 클라이언트에게 넘겨줄수 없을까 해서 고안.
이럴 때 사용할수 있는 인증 방식이 토큰이다.
대표적인 토큰 기반의 ex) JWT (JSON Web Token)
토큰 기반 인증의 순서
1.클라이언트가 서버에 아이디/비밀번호를 담아 로그인 요청을 보낸다.
2.서버는 아이디/비밀번호가 일치하는지 확인하고, 클라이언트에게 보낼 암호화된 토큰을 생성한다.
3.토큰을 클라이언트에게 보내주면, 클라이언트는 토큰을 저장한다.
4.클라이언트가 HTTP 헤더(authorization 헤더)에 토큰을 담아 보낸다.
5.서버는 토큰을 해독하여 맞다라는 판단이 될 경우, 클라이언트의 요청을 처리한 후 응답을 보내준다.
토큰기반 인증의 장점
1. Statelessness , Scalability (무상태성, 확장성)
2.안정성
3.어디서나 생성 가능
4.권한 부여에 용이하다.