KKanging

[http 완벽 가이드] 12장 기본 인증 본문

cs/http

[http 완벽 가이드] 12장 기본 인증

천방지축 개발자 2023. 8. 17. 15:37

이 내용은 http 완변 가이드란 책을 읽고 정리한 내용입니다.

 

더 자세한 내용이 궁금하시면 책을 직접 읽어보시는 걸 추천합니다.

 

 

 

12장 기본 인증

  • 웹에서 사용자가 비밀스러운 업무를 보기위해 다른 사용자는 통제하고 해당 사용자는 허락해야한다.
  • 그러기 위해서는 사용자에 대한 인증이 필요하다.
  • 이 장에선 기본 인증에 대해 배우고 다음장에서는 다이제스트 인증이라고 불르는 더 강력한 인증 기술을 다룬다.

1. 인증

  • 인증은 당신이 누구인지 증명하는 것이다.
  • 신분증이나 PIN 입력같은 행위를 해서 당신이 누구인지 증명한다.

1.1 HTTP 인증요구/응답 프레임 워크

  • HTTP 는 사용자 인증을 하는데 사용하는 자체 인증요구/응답 프레임워크를 제공한다.
  • 웹 애플리케이션이 HTTP 요청 메시지를 받으면, 서버는 요청을 처리하는 대신에 현재 사용자가 누구인지를 알 수 있게 비밀번호 같이 개인 정보를 요구하는 인증 요구로 응답할 수 있다.

1.2 인증 프로토콜과 헤더

단계 헤더 설명 메서드/상태
요청   첫 번째 요청에는 인증 정보가 없다 GET
인증 요구 WWW-Authenticate 서버는 사용자에게 인증을 요구하며 401 상태 정보로 요청을 반려한다.서버에는 각각 다른 비밀번호 영역이 있으므로 WWW-Authenticate 헤더에 해당 영역을 설명해 놓는다. 401 Unathorized
인증 Authorization 클라이언트는 요청을 다시 보내는데, 인증 알고리즘과 사용자 이름과 비밀번호를 기술한 Authorization 헤더를 함께 보낸다. GET
성공 Authentication-Info 인증 정보가 정확하다면, 서버는 문서와 함께 응답한다.특정 인증 알고리즘은 선택적 헤더인 Authentication-Info에 인증 세션에 관한 추가 정보를 기술해서 응답하기도 한다. 200 OK
- 요청을 보냄      
- 서버가 사용자에게 인증요구를 보냄. 401 Unauthorized + WWW-Authenticate 헤더(어디서 어떻게 인증할지 설명)      
- 클라이언트는 Authorization 헤더에 인코딩된 비밀번호와 그 외 인증 파라미터(주로 base-64 인코딩)를 담아서 요청을 보냄      
- 응답. 추가적으로 인증 알고리즘에 대한 정보를 Authentication-Info 헤더에 기술할 수도 있음      

1.3 보안영역

  • HTTP 가 어떻게 각 리소스마다 다른 접근 조건을 다루는지 설명할 필요가 있다.
  • WWW-Authenticate 헤더에 realm 지시자가 기술되어 있는걸 볼 수 있다.
  • 웹 서버는 기밀 문서를 보안 영역(realm) 그룹으로 나눈다. 보안 영역은 저마다 다른 사용자 권한을 요구한다.
  • WWW-Authenticate: Basic realm=”Corporate Finalcials” 를 입력한다면 회사 재무 영역에 접근하는 것을 볼 수 있다.

2. 기본인증

2.1 기본 인증의 예

  • 기본 인증의 절차는 위에서 설명했듯이 클라이언트가 리소스에 접근 했을때 그 영역이 보안영역이면 서버는 인증 요청을 보낼 것이다.
  • 브라우저는 로그인 화면을 띄우고 입력한 뒤 요청을 보내고
  • 인증이 완료되면 리소스를 보여준다.

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

  • 사용자가 서버에게 로그인 정보를 넘길때 Base-64라는 인코딩 메서드를 이용해서 인코딩하고
  • 서버는 메시지를 받고 디코딩한다.
  • 전송 중에 원본 문자열이 변질될 걱정 없이 원격에서 디코딩할 수있다.

2.3 프락시 인증

  • 중개 프락시 서버를 통해 인증할 수도 있다. 어떤 회사는 사용자들이 회사의 서버나 LAN이나 무선네트워크에 접근하기 전에 프락시 서버를 거치게 하여 사용자를 인증한다.
  • 이는 프락시 서버에서 접근 정책을 중앙 관리 할 수 있기 때문에 회사 리소스 전체에 대해 통합적인 접근 제어를 하기 위해 프락시 서버를 사용하면 좋다.
  • 프락시 인증은 웹 서버의 인증과 헤더와 상태 코드만 다르고 절차는 같다.

3. 기본 인증의 보안 결함

  • 기본 인증은 단순하고 편리하지만 안심할 수는 없다. 기본 인증은 악의적이지 않은 누군가 의도치 않게 리소스에 접근하는 것을 막는데 사용하거나, SSL 같은 암호 기술과 혼용한다.
  • 다음은 보안 결함이다.
    1. 쉬운 디코딩
    2. 보안 비밀번호가 디코딩하기에 더 복잡한 방식으로 인코딩되어 있다고 하더라도, 여전히 제 삼자는 읽기 힘든 사용자 이름과 비밀번호를 캡처한 다음, 그것을 그대로 원 서버에 보내서 인증에 선공하고 서버에 접근할 수 있다.
    3. 사용자가 다른 사이트에 동일한 아이디 비번을 사용한 경우 쉽게 다른 사이트에 대조해봄
    4. 메시지의 인증 헤더를 건드리지는 않지만 그 외 다른 부분을 수정해서 트랜잭션의 본래 의도를 바꿔버리는 프락시나 중개자가 중간에 개입하는 경우
    5. 기본 인증은 가짜 서버 위장에 취약
  • 기본인증은 일반적인 환경에서 개인화나 접근을 제어하는데 편리하다.
  • 하지만 보안적인 결함이 있고 SSL과 같은 암호화된 데이터 전송과 함께 연계해서 사용할 수 있다.