Study

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

이웃비 2021. 1. 18. 17:34

이 장에서는 HTTP 인증과 그것의 기본이 되는 기본 인증을 알아본다

 


 

1 . 인증

 

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

 

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

사용자가 다시 요청을 보낼 때는 인증 정보를 첨부해야한다. 인증정보가 맞지 않으면 서버는 클라이언트에 다시 인증요구를 보내거나 에러를 낼 수 있다.

 

1.2 인증 프로토콜과 헤더

기본 인증의 예

 기본 인증 절차 

  1. 사용자가 인증 요구를 보내면, 서버는 401 Unauthorized 응답과 함께 WWW-Authenticate 헤더를 기술해서 어디서 어떻게 인증할지 설명한다
  2. 클라이언트가 서버로 인증하려면, 인코딩된 비밀번호와 그 외 인증 파라미터들을 Authorization 헤더에 담아서 요청을 다시 보낸다
  3. 인증이 성공하면 서버는 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. 기본 인증의 보안 결함

 

  1. 기본 인증의 인코딩된 비밀번호는 쉽게 디코딩 할 수 있기 때문에 HTTP트랜잭션을 SSL암호화 채널을 통해 보내거나, 보안이 더 강화된 다이제스트 인증 같은 프로토콜을 사용하는 것이 좋다
  2. 인코딩된 비밀번호를 원 서버에 보내서 인증에 성공하고 서버에 접근할 수 있다
  3. 사용자는 보통 아이디,비밀번호를 여러 사이트에 사용하므로 더 문제가 된다
  4. 가짜 서버에 연결되어 있을 수 있다