[HTTP] General HTTP authentication

dev_Hyun·2023년 1월 12일
0

인증

  • HTTP 는 자체적인 인증 관련 기능(프레임워크)을 제공한다.
  • 그러나 대부분의 웹사이트는 자체 인증 기능보다 인증 모듈을 이용해 직접 인증을 구현한다.

HTTP 기본 인증 과정

# 참고 링크 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate
# 참고 링크 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication

출처:(서적)HTTP 완벽 가이드

  1. Client) GET 요청. 특정 리소스 요청.

  2. Server) 401 Unauthorized 응답. 인증 요구. WWW-Authenticate: <auth-scheme> realm=<realm>

    • <auth-scheme> : The Authentication scheme. 다음과 같은 스킴이 자주 사용된다. Basic(가장 흔함, 참고 링크), Digest, Negotiate, AWS4-HMAC-SHA256.
    • <realm> : 보안 영역 그룹을 기술.
  3. Client) ID & Pwd 입력

  4. Client) GET 요청. 인증 알고리즘 및 인증 정보를 포함한 Authorization헤더 전송.

    • 콜론으로 이어붙여 ID:pwd 형식으로 변환.
    • basic 인증방법의 경우 base-64방식으로 인코딩하여, Authorization헤더에 담아 서버로 전송한다.
      • base-64 : 8비트 시퀀스를 → 6비트 시퀀스으로 → 각 조각을 64개 문자 중 하나를 선택.
  5. Server) 전송받은 ID & Pwd를 디코딩 후 검사.

  6. Server) 200 OK 응답. Authentication-Info헤더에 인증세션 정보를 함께 응답하는 것은 선택사항.


기본인증 결함

  1. 디코딩 되기 쉬운 형식
  2. ID/Pwd를 탈취하여 원서버에 보내 인증하는, 재전송 공격에 취약.
  3. 가짜 서버의 위장에 취약
  • 대안 : SSL 인증과 같은 암호화된 데이터 전송과 함께 연계.
profile
공룡, 다람쥐 그리고 돌고래!

0개의 댓글