인증(Authentication)과 인가(Authorization)
인증과 인가는 조금씩 다르다.
인증(Authentication)은 사용자가 서버로부터 자신이 누구인지 알리는 과정이다.
그림처럼 로그인 과정이 그에 해당하는데, 로그인을 통해 유저가 서버의 회원임이 인증되면, 서버에서 access token과 refresh token을 발급받는다.
인가(Authorization)는 인증 된 사용자가, 로그인을 이미 거친 상황이므로 더이상 로그인의 과정을 반복하지 않기 위해, 특정 기능을 접근할 때 이미 인증된 사용자임을 밝히며 기능을 요청하는 과정을 말한다.
사용자가 특정 기능을 서버에 요청할 때, request header에 accesstoken을 함께 보내면, 서버에서 accesstoken이 유효한지(서명, 만료기간 등) 검사한 후에 기능을 제공한다.
이때, 기능마다 다른 권한을 부여하기 위해 Role을 통해 사용자의 권한을 구분한다.
만약 access token이 기간이 만료됐을 경우, 사용자가 access token과 refresh token을 같이 서버에 보내면, 서버에서 refresh token의 유효성을 검사한 후에, 새로운 acess token을 사용자에게 발급해준다.