FE/BOOK

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

<zinny/> 2025. 1. 2. 21:11
728x90

 

웹 애플리케이션이 HTTP 요청 메시지를 받으면, 서버는 요청을 처리하는 대신에 현재 사용자가 누구인지 알 수 있게 개인 정보를 요구하는 인증 요구로 응답할 수 있다.

클라이언트가 서버에 요청하면, 서버는 401응답과 함께 www-Authenticate 헤더를 기술해서 어디서 어떻게 인증해야 하는지 설명한다.

클라이언트는 인코딩된 비번과 그 외 인증 파라미터를 Authroization 헤더에 담아서 요청을 보내고,

성공적으로 완료되면 서버는 정상적인 상태 코드를 반환한다.

 

HTTP는 각 리소스마다 다른 접근 조건을 다룰때는 기밀문서 보안영역(realm) 그룹으로 나눈다.

 

Base-64 인코딩 인증

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

Base-64인코딩은 바이너리, 텍스트, 국제문자 데이터 문자열을 받아서 전송할 수있게, 그 문자열을 전송 가능한 문자인 알파벳으로 변환하기 위해 발명 되었다. 전송 중에 원본 문자열이 변질될 걱정 없이 원격에서 디코딩할 수 있다. 

또한 HTTP헤더에서 사용할 수 없는 문자(큰따옴표, 콜론, 캐리지리턴)을 포함한 사용자 이름이나 비번을 보낼때 유용하다. 

 

 

프락시 인증

특정 회사는 사용자들이 회사의 서버나 LAN이나 무선 네트워크에 접근하기 전에 프락시 서버를 거치게 하여 사용자를 인증한다.

프락시 서버에서 접근 정책을 중앙에서 관리할 수 있어 유용하다.

 

기본인증의 보안 결함

  1. 사용자 이름, 비번을 쉽게 디코딩할 수있는 형식으로 네트워크에 전송하기 때문에, 비번을 그대로 보내는 것과 다름이 없다. 그래서 HTTP트랜젝션을 SSL암호화 채널을 통해 보내거나, 보안이 더 강화된 다이제스트 인증같은 프로토콜을 사용 하는 것이 좋다. 
  2. 보안 비번이 복잡해도, 제 3자가 그 값을 원서버에 보내 인증에 성공하고 서버에 접근 할 수있다.
  3. 무료인터넷 이메일 사이트에서 사용자의 이름과 비번을 캡쳐, 동일한 사용자의 이름과 비번으로 은행 사이트를 털어갈 수 있다. 
  4. 트랜잭션의 본래 의도를 바꿔버리는 프락시나 중개자가 중간에 개입하는 경우, 기본인증은 정상적인 동작을 보장하지 않는다. 
  5. 가짜 서버의 위장에 취약하다. 

그래서 기본인증은 암호화된 데이터 전송 (SSL같은)과 함께 연계해서 사용할 수 있다. 

SSL: 보안 소켓 계층(Secure Sockets Layer)
SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술

 

728x90