authentication 인증 === 로그인
authorization 인가 === 인증을 받은 사용자가 서비스를 이용할때, 서버가 로그인 상태를 확인하는 것
토큰기반 인증
인증(authentication), 인가(authorization)절차
- 클라이언트가 아이디/비밀번호를 담아 서버에 로그인 요청을 보낸다.
- 서버는 데이터베이스에 일치하는 아이디/비밀번호가 존재하는지 확인하고, 일치한다면 클라이언트에 보낼 암호화된 토큰(access, refresh)을 생성한다.
- 토큰을 클라이언트에 보내주면, 클라이언트는 토큰을 저장한다. 이때 클라이언트에서 저장하는 위치는 local storage, cookie, react state 등 다양하다.
- 클라이언트가 HTTP 헤더(
req.headers.authorization
)에 토큰을 담아 보낸다.
- 서버는 토큰을 생성할 때 사용한 비밀키로 토큰을 해독해서 정상적으로 해독되면 클라이언트의 요청을 처리한 후 응답을 보낸다.
토큰기반 인증의 장점