4.1 Rest API 인증 기법

jaehyeok1230·2022년 12월 25일
0

Basic 인증

  • 모든 HTTP 요청에 아이디와 비밀번호를 같이 보내는 방법
  • HTTP 요청 헤더의 Authorization 부분에 아이디와 비밀번호를 콜론으로 이어 붙인 후 인코딩한 문자열을 함께 보낸다.
  • 서버는 디코딩을 통해 아이디와 비밀번호를 찾아낸 후, DB나 인증 서버의 레코드와 비교한다.
  • 일치하면 요청 받은 일을 수행하고, 일치하지 않으면 거부한다.

문제점

  • 디코더만 있으면 누구나 디코딩해 원래의 아이디와 비밀번호를 확인할 수 있다.
    - 따라서 HTTPS와 사용해야 한다.
  • 유저를 로그아웃시킬 수 없다.
    - 모든 요청이 일종의 로그인 요청이기 때문이다.
  • 인증 서버와 인증DB에 과부하가 걸릴 확률이 높다. (스케일 문제)

토큰 기반 인증

  • 최초 로그인 시 서버가 토큰을 만들어 반환한다.
  • 클라이언트는 이후 요청에 아이디와 비밀번호 대신 토큰을 넘겨서 인증한다.
    - 요청 헤더에 Authorization: Bearer Token을 명시한다.
  • 서버는 헤더의 토큰과 서버의 토큰을 비교해 인증한다.

Basic과의 차이점

  • 아이디와 비밀번호를 매번 보내지 않으므로 조금 더 안전하다.
  • 사용자의 인가 정보, 유효기간을 정해 관리할 수 있다.
    - 토큰은 서버가 마음대로 생성할 수 있기 때문이다.
  • 디바이스마다 다른 토큰을 생성해주고 유효기간을 다르게 정해서 임의로 로그아웃할 수도 있다.

문제점

  • 여전히 스케일 문제가 존재한다.

JSON Web Token

전자 서명된 토큰을 이용해 스케일 문제를 해결한다.
이렇게 전자 서명된 토큰 중 하나가 바로 JWT(JSON Web Token)이다.

JWT란?

0개의 댓글