2021-11-13 그림으로 배우는 HTTP & Network (10주차)

액세스 인증

HTTP에서 사용하는 인증 방법

  • BASIC 인증
  • DIGEST 인증
  • SSL 클라이언트 인증
  • 폼 베이스 인증

BASIC 인증

  1. BASIC 인증이 필요한 리소스에 리퀘스트가 있을 경우에는 서버가 401상태코드와 함께 인증방식을 WWW-Authenticate 헤더필드에 포함해서 리스폰스 반환
  2. 상태코드 401을 받은 클라이언트는 BASIC 인증을 위해서 유저 ID랑 패스워드를 Base64인코드 해서 다시 리퀘스트 송신
  3. 서버는 인증 정보가 정확한지 확인
    • BASIC 인증에서 Base64 인코딩은 암호화가 아니기 때문에 위험
    • 한번 인증하면 일반 브라우저에서는 로그아웃 할 수 없다.

DIGEST 인증

  • DIGEST 인증은 챌린지 리스폰스 방식이 사용되고 있어 패스워드를 있는 그대로 보내는 일은 없다.
  • 서버측에서 받은 챌린지 코드를 사용해서 리스폰스 코드를 계산하고 상대에게 송신하여 인증하는 방법

SSL 클라이언트 인증

  • HTTPS의 클라이언트 인증서를 이용한 인증 방식
    1. 인증이 필요한 리소스의 리퀘스트가 있었을 경우에 클라이언트 증명서를 요구하는 “Certificate Request”라는 메시지를 송신합니다.
    2. 유저는 송신하는 클라이언트 증명서를 송신
    3. 서브에서 검증해서 클라이언트의 공개키를 취득

세션 관리와 쿠키

  • HTTP는 방금 인증을 성공했던 유저라는 상태를 유지할 수 없다. 상태 관리가 안되기 때문에 세션관리와 쿠키를 사용
    1. 서버에 유저 ID나 패스워드 등의 자격정보를 포함한 리퀘스트 송신
    2. 서버는 유저를 식별하기 위해서 세션 ID를 발행한다. 클라이언트 측에 송신할 때는 Set-Cookie 헤더 필드에 세션 ID를 저장해서 리스폰스 반환.
    3. 클라이언트는 세션 ID는 쿠키로 저장
Written on November 13, 2021