[웹 스터딩]4.1 REST API 인증 기법

박준수·2022년 12월 23일
0

[웹 스터디]

목록 보기
17/19

BASIC 인증

: 모든 http 요청에 아이디와 비밀번호를 같이 보내는 것이다.

최초 로그인 후 http 요청 헤더의 Authorization: 부분에 다음 처럼 아아디와 비밀번호를 콜론으로 이어 붙인 후 base64로 인코딩한 문자열을 함께 보낸다.

이 http 요청을 수신한 서버는 인코딩된 문자열을 디코딩해 아이디와 비밀번호를 찾아낸 후, 유저 정보가 저장된 데이터베이스 또는 인증 서버의 레코드와 비교한다.

문제점

  • 아이디와 비밀번호를 노출한다.
  • 유저를 로그아웃시킬 수 없다.(모든 요청이 일종의 로그인 요청이기 때문이다.)
  • 사용자의 계정 정보가 있는 저장 장소가 다음 사진과 같을 때 인증 서버와 인증 db에 과부하가 걸릴 확률이 높다.(1초에 10만개의 처리한느 서버는 10만개의 요청을 확인하기 위해 10만번 계정 정보의 저장 장소를 갔다 와야 한다!!)

토큰 기반 인증

: 서버가 자기만의 노하우로 토큰(일종의 문자열)을 만들어 반환하면 클라이언트는 이후 요청에 아이디와 비밀번호 대신 토큰을 계속 넘겨 자신이 인증된 사용자임을 알리는 것이다.

토큰을 기반으로 하는 요청은 헤더에 다음과 같이 Authorization : Bearer 토큰을 명시한다.

Bearer : JWT 혹은 OAuth에 대한 토큰을 사용하는 인증 타입

JSON 웹 토큰

: JSON 형태로 된 토큰(디지털 서명된 토큰)

토큰의 구성 : {header}.{payload}.{signature}

  • typ : 토큰의 타입
  • alg : 토큰의 서명을 발행하기 위해 사용된 해시 알고리즘의 종류

Payload

  • sub : 이 토큰의 주인을 의미 (ID처럼 유일한 식별자)
  • iss : 이 토큰을 발행한 주체 (페이스북이 발행한다면 facebook)
  • iat : 토큰이 발행된 날짜와 시간
  • exp : 토큰이 만료되는 시간

Signature

  • 토큰을 발행한 주체 Issuer가 발행한 서명. 토큰의 유효성 검사에 사용됨

토큰 인증 방식의 과정

로그인부분은 동아리때 정리한 부분이 있다. ==> 동아리 프로젝트 로그인 기능 구현

profile
방구석개발자

0개의 댓글