HTTP는 자체적인 인증 관련 기능을 제공하며, HTTP에는 기본 인증과 다이제스트 인증이라는 두 가지 공식적인 인증 프로토콜이 있다.

여기서는 기본 인증에 대해 다룬다.

HTTP 인증 모델

  1. 클라이언트가 HTTP 요청 메시지를 전송한다.
  2. 서버는 요청을 처리하는 대신 사용자 이름과 비밀번호와 같이 개인 정보를 요구하는 인증 요구로 응답한다.
  3. 사용자가 인증 정보를 첨부하여 다시 요청을 보낸다.
  4. 만약 인증 정보가 맞지 않으면 서버는 클라이언트에 다시 인증 요구를 보내거나 에러를 낸다.
  5. 인증 정보가 맞으면 요청은 문제없이 처리가 완료된다.

기본 인증 헤더

기본 인증에서 위 모델을 수행할 때 사용하는 헤더는 다음과 같다.

Untitled

Base-64 사용자 이름/비밀번호 인코딩

HTTP 기본 인증은 사용자 이름과 비밀번호를 콜론으로 이어서 합치고, base-64 인코딩 메서드를 사용해 인코딩한다.

Base-64 인코딩

8비트 바이트로 이루어져 있는 시퀀스를 6비트 덩어리의 시퀀스로 변환하는 인코딩 방식이다. 각 6비트 조각은 대부분 문자와 숫자로 이루어진 특별한 64개의 문자 중에서 선택된다.

Base-64 인코딩은 바이너리, 텍스트, 국제 문자 데이터 등 어떤 시스템에서는 문제를 일으킬 수 있는 문자열들을 전송 가능한 알파벳 문자로 변환하기 위해 발명됐다.

Base-64는 국제 문자나 HTTP 헤더에서 사용할 수 없는 큰따옴표, 콜론, 캐리지 리턴 등의 문자를 포함한 사용자 이름이나 비밀번호를 보내야 할 때 유용하다.