인증과 인가

ujin·2022년 11월 20일
0

CS

목록 보기
3/3

인증

유저 정보로 서비스의 회원인지 아닌지를 입증하는 과정이다. 서비스 뿐만아니라 API도 마찬가지이다.

API를 호출하는 대상을 확인하는 절차 필요 → API 인증

인가

인증을 바탕으로 사용자가 리소스를 요청했을 경우 해당 사용자가 그 리소르를 사용할 권한이 있는지 체크하는 과정이다.

인증과 인가의 방법

HTTP의 무상태성 때문에 이 방법들을 사용한다. 무상태성은 비연결성에서 파생되었다.

클라이언트와 서버가 한번 연결하면, 맺었던 연결을 끊어버린다. 그래서 서버가 같은 클라이언트한테 연속 요청을 보내도 같은 클라리언트라는 인식 없이 응답을 보낸다. 즉, 로그인 기능에 맞지 않는다. 그래서 이를 극복한 것이 인증과 인가이다.

  1. 인증하기 → Request Header 이용

  2. 인증 유지하기 → Broswer 이용

  3. 안전하게 인증 → Server 이용

  4. 효율적 인증 → Token

  5. 다른 채널 → OAuth 이용

Request Header

클라이언트 → 서버

사용자 정보를 Request Header에 인코딩 형태로 담아서 서버에 인증을 요청한다. (인코딩은 브라우저가 처리)

서버 → DB

서버는 디코딩한 후 DB에 접근

DB → 서버

OK 응답

단점

  • 해커가 데이터를 패킷을 가로채서 이 헤더를 디코딩하면 사용자의 정보가 노출된다
  • 로그인 상태에서 어떠한 새로운 요청을 하면 매번 인증해야한다.

위의 두 번째 단점을 해결하기 위한 방법이다. 한 번 로그인을 할 경우, 어떠한 방식에 의해 그 사용자에 대한 인증이 유지되면 된다. 그것이 쿠키이다.

쿠키

브라우저 로컬 스토리지에 저장되는 key:value로구성되며 string으로 이루어진 작은 데이터 파일이다.

  • 쿠키의 동작 방식
    1. 클라이언트가 페이지를 요청하면 서버에서 쿠키를 생성한다
    2. 서버가 응답할 때 쿠키에 저장할 정보를 Response Header의 Set-Cookie로 함께 전달한다
    3. 브라우저가 종료되더라도 쿠키 만료 기간이 유효하다면 클라이언트에서 보관한다.
      1. 브라우저 종료여도 쿠키 유지하고 싶으면 → Permanant를 이용한다
    4. 클라이언트가 요청을 할 경우 HTTP Request Header에 Cookie: Key=value로 쿠키를 함께 보낸다
  • 용도
    • 쿠키의 존재로 여러 페이지를 이동하거나 서버에 새로운 요청을 할 때마다 매번 로그인을 하지 않고 유저 정보를 유지할 수 있다 대표적인 예로는
      • 로그인 상태 유지, 광고 7일간 다시 보지 않기, 최근 검색 상품 추천, 쇼핑몰 장바구니 기능…
  • 단점
    • 이런 식으로 인증을 하고 유지할 경우, 클라이언트에게 편리함을 제공하지만 해커들에게도 매우 편리하게 유저 정보를 제공하게 된다. 해커들이 쿠키만 탈취하면 정보를 쉽게 빼낼 수 있기 때문이다.
profile
개발공부일기

0개의 댓글