Http authentication

From 탱이의 잡동사니
Revision as of 08:30, 10 August 2016 by Pchero (talk | contribs) (→‎Basic)
Jump to navigation Jump to search

Overview

http authentication 내용 정리.

Basic

HTTP 에서 사용할 수 있는 인증 방법은 다음과 같다.

  • Anonymous(익명)
  • BASIC 인증
  • DIGEST 인증
  • SSL 클라이언트 인증
  • 폼 베이스 인증
  • OAuth

Anonymous

인증정보를 포함하지 않는 요청도 인증 방식에 포함된다. 리소스에 대해 모든 엑세스 권한을 부여한다.

Basic

Basic Authentication(BA) 인증. 클라이언트에 사용자 이름과 암호를 Base64 로 된 문자열을 요청한다. 간편하며 널리 쓰이지만, 패킷 도청에 매우 취약하다.

Feature

  • BA인증은 전송 단계에서 아무런 암호화 보안을 제공하지 않는다. 단순히 Base64로 인코딩을 할 뿐이며, 어떠한 암호화나 해쉬화가 되지 않는다. 이 때문에 자주 HTTP에서는 이를 다른 암호화 기술과 함께 혼용하여 사용한다.
  • Base64로 인코딩된 값은 쉽게 디코딩이 가능하다. 비밀번호가 그대로 노출된다. 때문에 쉽게 사용자 정보를 알아내어 악용할 수 있다.
  • BA인증 필드는 HTTP 요청 헤더에 포함되기 때문에, 필요한 경우, WEB 브라우저 자체에서 인증정보(username/password)를 캐시로 저장할 수 있다. 캐시되는 기간과 정책은 각각의 브라우저마다 다르다.
  • HTTP 에서는 웹서버의 Log out 메소드를 지원하지 않는다. 하지만 보안 캐시를 삭제하는 몇가지 방법들이 있다. 그 중 한가지 방법으로 사용자를 다른 URL 로 redirect 하여 보안 정보를 더 이상 사용할 수 없는 정보로 업데이트하게끔 유도하는 것이다.
  • BA 인증과 관련한 캐싱/기간/정책 등은 브라우저마다 다를 수 있다.
  • 프록시나 중개자가 개입하는 경우, 정상적인 동작을 보장하지 않는다.
  • 가짜 서버의 위장에 취약하다.

Protocol

다음과 같은 내용으로 프로토콜이 진행된다.

- Client 는 서버로 
  • Server side


  • Client Side

See also