[HTTP] 기본 인증

2021. 10. 19. 21:57

기본 인증

  • 많은 사람들이 웹을 통해 개인적인 업무를 보거나 개인적인 데이터에 접근함
    • 허가된 사람만이 데이터에 접근하게 할 필요성이 있음
    • 그렇기 위해서는 서버가 사용자가 누구인지 식별할 수 있어야 함

 

12.1 인증

  • 인증은 당신이 누구인지 증명하는 것

 

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

  • HTTP 인증 모델

HTTP 인증 모델

 

12.1.2 인증 프로토콜과 헤더

  • HTTP는 필요에 따라 고쳐 쓸 수 있는 제어 헤더를 통해, 다른 인증 프로토콜에 맞추어 확장할 수 있는 프레임워크를 제공함

인증 프로토콜

  • 단계
    • 요청
    • 인증 요구
    • 인증
    • 성공

 

12.1.3 보안영역

  • 웹 서버는 기밀문서를 보안영역(realm) 그룹으로 나눔
    • 보안 영역은 저마다 다른 사용자 권한을 요구함
    • 부서별로 접근할 수 있는 데이터가 다른것과 같다.

 

 

12.2 기본 인증

  • 가장 잘 알려진HTTP 인증 규약
  • 웹 서버는 클라이언트의 요청을 거부하고 유효한 사용자 이름과 비밀번호를 요구할수 있음
  • 서버는 200 대신 401 상태 코드와 함께 클라이언트가 접근하려고 했던 보안영역을 WWW-Authenticate에 기술해서 응답하여 인증요구를 시작
  • 브라우저는 사용자가 입력한 사용자 이름과 비밀번호를 Authorization 요청 헤더 안에 암호화해서 서버로 다시 보냄

 

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

  • HTTP 기본 인증은 사용자 이름과 비밀번호를 콜론으로 이어서 합치고, base-64 인코딩 메소드를 사용해 인코딩함
    • base-64 인코딩은 8비트 바이트로 이루어져 있는 시퀀스를 6비트 덩어리의 시퀀스로 변환함
  • Base-64 인코딩은 바이너리, 텍스트, 국제 문자 데이터 문자열을 받아서 전송할 수 있게, 그 문자열을 전송 가능한 문자인 알파벳으로 변환하기 위해 발명됨
    • ASCII로 표현하기 힘든 부분(큰따옴표, 콜론, 캐리지 리턴)등이 표현가능

 

12.2.3 프록시 인증

  • 중개 프록시 서버를 통해 인증 가능
  • 회사에서 서버 LAN이나 무선 네트워크 접근하기 전 프록시서버를 거쳐 사용자 인증을 한다.

 

 

12.3 기본인증의 보안 결함

  • 기본 인증은 사용자 이름과 비밀번호를 쉽게 디코딩 할 수 있는 형식으로 네트워크에 전송함
  • 보안 비밀번호가 디코딩하기에 더 복잡한 방식으로 인코딩되어 있다고 하더라도, 그거 자체를 복사해서 보낼 수도 있음
  • 메시지의 인증 헤더를 건드리지는 않지만, 그 외 다른부분을 수정해서 트랜잭션의 본래 의도를 바꿔버리는 프록시나 중개자가 중간에 개입하면서 기본인증이 안 될 수 있음
  • 기본 인증은 가짜 서버의 위장에 취약함

 

 

정리

  • 기본 인증은 일반적인 환경에서 개인화나 접근을 제어하는데 편리하다. 단 치명적이지 않은 경우에만

'CS > 네트워크' 카테고리의 다른 글

OSI 7 Layer  (0) 2021.12.29
[HTTP] 엔티티와 인코딩  (0) 2021.11.01
[HTTP] 클라이언트 식별과 쿠키  (0) 2021.10.18
[HTTP] HTTP 2.0  (0) 2021.10.17
[HTTP] 캐시  (0) 2021.10.06

+ Recent posts