이 장에서는 HTTP 인증과 그것의 기본이 되는 기본 인증을 알아본다
1 . 인증
1.1 HTTP의 인증 요구 / 응답 프레임워크
웹 에플리케이션이 HTTP 요청 메시지를 받으면, 서버는 요청을 처리하는 대신에 현재 사용자가 누구인지를 알 수 있게 비밀번호 같이 개인 정보를 요구하는 '인증 요구'로 응답할 수 있다.
사용자가 다시 요청을 보낼 때는 인증 정보를 첨부해야한다. 인증정보가 맞지 않으면 서버는 클라이언트에 다시 인증요구를 보내거나 에러를 낼 수 있다.
1.2 인증 프로토콜과 헤더
기본 인증 절차
- 사용자가 인증 요구를 보내면, 서버는 401 Unauthorized 응답과 함께 WWW-Authenticate 헤더를 기술해서 어디서 어떻게 인증할지 설명한다
- 클라이언트가 서버로 인증하려면, 인코딩된 비밀번호와 그 외 인증 파라미터들을 Authorization 헤더에 담아서 요청을 다시 보낸다
- 인증이 성공하면 서버는 200 OK를 반환하며, 추가적인 정보를 Authentication-Info헤더에 기술할 수 있다
1.3 보안 영역
웹 서버는 기밀문서를 보안 영역(realm) 그룹으로 나눈다. 보안 영역은 저마다 다른 사용자 권한을 요구한다.
만약 회사 재무 문서의 접근을 요구한다면, realm="Corporate Financials"로 사용자가 권한의 범위를 이해하는데 도움을 줄 수 있다.
2. 기본 인증
Base-64 인코딩
절차 | 예 |
1. 사용자 이름과 비밀번호를 입력받는다 | ID: brian-totty / PW: Ow! |
2. 사용자 이름,비밀번호를 콜론으로 잇는다 | brian-totty:Ow! |
3. Base 64 인코딩 | BASE64ENC(brian-totty:Ow!) -> YnJpYW4tdG90dHk6T3ch |
4. 인가 요청을 보낸다 | GET / family/jeff.jpg HTTP/1.0 Authorization: Basic YnJpYW4tdG90dHk6T3ch |
웹 서버 인증 vs 프락시 인증
웹 서버 | 프락시 서버 |
비인증 상태 코드 : 401 | 비인증 상태 코드 : 407 |
WWW-Authenticate | Proxy-Authenticate |
Authorization | Proxy-Authorization |
Authentication-Info | Proxy-Authentication-Info |
3. 기본 인증의 보안 결함
- 기본 인증의 인코딩된 비밀번호는 쉽게 디코딩 할 수 있기 때문에 HTTP트랜잭션을 SSL암호화 채널을 통해 보내거나, 보안이 더 강화된 다이제스트 인증 같은 프로토콜을 사용하는 것이 좋다
- 인코딩된 비밀번호를 원 서버에 보내서 인증에 성공하고 서버에 접근할 수 있다
- 사용자는 보통 아이디,비밀번호를 여러 사이트에 사용하므로 더 문제가 된다
- 가짜 서버에 연결되어 있을 수 있다
'Study' 카테고리의 다른 글
[HTTP 완벽 가이드] 14장 : 보안 HTTP (0) | 2021.01.21 |
---|---|
[HTTP 완벽 가이드] 13장 : 다이제스트 인증 (0) | 2021.01.20 |
[HTTP 완벽가이드] 11장 : 클라이언트 식별과 쿠키 (0) | 2021.01.15 |
[HTTP 완벽 가이드] 10장 : HTTP/2.0 (0) | 2021.01.14 |
[HTTP 완벽 가이드] 9장 : 웹 로봇 (0) | 2021.01.13 |