All Articles

인증 & 인가

인증&인가

인증과 인가는 API에서 가장 자주 구현되는 기능 중 하나.
private한 api는 물론이고 public한 api도 기본적인 인증과 인가를 요구한다.

인증

인증은 유저를 식별하고 확인하는 절차다.
프론트엔드에서 인증하는 기능 중 대표적인것은 로그인이나 회원가입 할 때 유저의 정보를 확인하는 것이다.

인가

유저가 요청하는 것을 실행할 수 있는 권한이 있는 유저인가 없는 유저인가를 확인하는 절차.

JWT(JSON Web Tokens)

먼저 JWT에 대해 작성하기 전에 HTTP의 특징을 짚고 나서 JWT를 작성하고자 한다.
HTTP로 클라이언트와 서버가 12시에 통신하고나서 12시 2분에 다시 통신하할때 12시에 통신한것과 12시 2분에 통신
하는것은 각각 독립적(이전의 상태를 알 수 없다.)
쉽게 풀어보자면 12시에 로그인을 했는데 로그인 한 상태에서 12시 2분에 클라이언트가 서버에 요청을 하면서 HTTP로
통신이 이뤄지지만 12시 2분에 요청한 정보가 12시에 로그인을 한(했던) 유저인지 아닌지 알 수 없다.
그렇다면 12에 로그인 했던 유저라고(로그인 했던 유저라는 정보) 서버에게 알려주기 위해 request에 담아 전송해줘야 한다.(요청할때마다)
이러한 비효율적인 부분을 보완하고자 서버에게 동일한 정보를 토큰형태로 받아서 쿠키, 로컬스토리지 등 저장소에 저장해뒀다가 서버에 요청할 때 저장한 곳에서 토큰을 꺼내어 request에 담아 보낸다.

위 글에서 밑 부분이 바로 JWT다.
동일한 정보, 상태를 서버에게 보낼 때 정보, 상태를 담고 있는 토큰을 request에 담아 보낸다.
이 토큰은 최초에 서버가 클라이언트에게 생성한 후 보내준다.