토큰인증

Creating the dots·2021년 10월 21일
0

Authentication

목록 보기
2/3

authentication 인증 === 로그인
authorization 인가 === 인증을 받은 사용자가 서비스를 이용할때, 서버가 로그인 상태를 확인하는 것

토큰기반 인증

인증(authentication), 인가(authorization)절차

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

토큰기반 인증의 장점

  • statelessness & scalability (무상태성과 확장성)

    • 서버는 비밀키만 가지고, 생성한 토큰이 해독되는지 여부만 판단하기 때문에 클라이언트에 대한 정보를 저장할 필요가 없다.
    • 클라이언트는 새로운 요청을 보낼때마다 토큰을 헤더에 포함시키면 된다. 서버를 여러개 갖고 있는 서비스라면 같은 토큰으로 여러 서버에서 인증가능하므로 편리하다.
  • 서버 분리가 가능하다

    • 토큰 생성용 서버를 만들거나 다른 회사에서 토큰관련 작업을 맡기는 것 등 다양한 활용이 가능하다.
  • 권한 부여에 용이하다

    • 토큰의 payload에 어떤 정보에 접근 가능한지 정할 수 있다. (ex. 서비스의 사진과 연락처 사용권한만 부여)

profile
어제보다 나은 오늘을 만드는 중

0개의 댓글