919 words
5 minutes
[HTTP 완벽 가이드] 12. 기본 인증
NOTE

HTTP 기본 인증 (Basic Authentication)은 HTTP의 Authentication 헤더에 Base-64 인코딩 된 인증 파라미터를 사용한다. 따라서 보안을 위해 추가적인 암호화 기술이 필요하다.

키워드#

기본 인증, Base-64 인코딩

메모 및 핵심 요점#

  • 인증 : 당신이 누구인지 증명하는 것
  • HTTP에는 기본 인증과 다이제스트 인증이라는 두 가지 공식적인 인증 프로토콜이 있다. 현대에 HTTP 인증요구/응답 프로토콜을 사용하는 인증 프로토콜에는 OAuth가 있다. (OAuth는 인증의 흐름 일부에서 HTTP 기본 인증을 사용합니다)
  • 기본 인증 Flow 정리
    • 서버가 사용자에게 401 Unauthorized 응답과 함께 WWW-Authenticate 헤더(어디서 어떻게 인증할지 설명, 사용자가 접근하려던 보안 영역(realm)을 기술함)를 기술하여 사용자에게 인증을 요구한다.
    • 클라이언트는 서버에게 인증하기 위해 인코딩(base-64 방식을 사용한다)된 비밀번호와 파라미터들을 Authenticate 헤더에 담아서 요청을 보낸다. (사용자 이름과 비밀번호를 콜론으로 이어붙이고 인코딩하여 헤더에 담음)
    • 인증 요청이 완료되면, 서버는 정상적인 상태 코드를 반환한다.
  • 기본 인증 프로토콜의 경우, Authentication-Info 헤더를 사용하지 않는다. 이 헤더에는 추가적인 인증 알고리즘을 기술한다.
  • Base-64 인코딩 : 바이너리, 텍스트, 국제 문자 데이터ㅕ 문자열을 받아서 전송할 수 있게, 그 문자열을 전송한 문자열인 알파벳으로 변환하기 위해 발명됨. 국제 문자나 HTTP 헤더에서 사용할 수 없는 문자를 포함한 정보를 보내야 할 때 유용하게 사용할 수 있다.
  • 프락시 인증 : 중계 서버를 이용한 인증.
  • 기본 인증의 보안 문제
    • 기반으로 하는 base-64 인코딩은 디코딩 하기 쉬운 형태임. (base-64로 인코딩된 비밀번호는 사실상 ‘비밀번호 그대로’ 보내는 것과 다름 없다.)
    • 클라이언트에서 인코딩하여 보내는 정보를 중간에서 가로채서, 그대로 서버에 보낼 수 있다.
    • 클라이언트는 대부분 아이디와 비밀번호를 통일하므로, 하나를 알면 다른 곳에서도 사용할 염려가 있다.
    • 가짜 서버의 위장에 취약하다.
    • 프락시나 중개자가 중간에 개입할 경우, 정상적인 동작을 보장하지 않는다.

⇒ 이러한 문제 때문에 기본 인증의 경우, 누군가가 의도치 않게 리소스에 접근하는 것을 막거나 (해당 데이터에 접근하는 것 자체를 불편하게 만든다) SSL과 같은 암호 기술과 혼용 하여 사용한다.

인용#

그러기 위해서는 서버가 사용자가 누구인지 식별할 수 있어야 한다. 서버가 사용자가 누구인지 알면, 그 사용자가 어떤 작업이나 리소스에 접근할 수 있는 지 결정할 수 있다. 인증은 당신이 누구인지 증명하는 것이다. (321p)

기본 인증은 사용자 이름과 비밀번호를 악의적인 개인들에게 숨기려고 암호화된 데이터 전송(SSL 같은)과 함께 연계해서 사용할 수 있다. 이는 널리 사용하는 기술이다. (330p)

[HTTP 완벽 가이드] 12. 기본 인증
https://punchdrunkard.github.io/posts/book/htttp-guide/http12/
Author
42
Published at
2023-02-17