[HTTP] 기본 인증
2021. 10. 19. 21:57
기본 인증
- 많은 사람들이 웹을 통해 개인적인 업무를 보거나 개인적인 데이터에 접근함
- 허가된 사람만이 데이터에 접근하게 할 필요성이 있음
- 그렇기 위해서는 서버가 사용자가 누구인지 식별할 수 있어야 함
12.1 인증
- 인증은 당신이 누구인지 증명하는 것
12.1.1 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 |