본문

Basic access authentication : 기본 접근 인증


[그림 1] Internet Explorer에서 지원하는 Authentication창.


HTTP 트랜잭션의 맥락에서, 기본 접근 인증(Basic access authentication)은 페이지 요청을 할때 웹브라우저나 기타 클라이언트 프로그램에 사용자 이름과 암호로 이루어 진 '자격증명'을 제공하기 위해 고안된 방식이다.

페이지 전송을 하기 전, 사용자 이름과 암호는 Base64방식으로 인코드 된다. 예를들어 사용자 이름이 Aladdin이고 암호가 open seasame이라면, 이 둘은 결합되어 Aladdin:open seasame으로 되고, 이를 Base64로 인코딩 하여 QWxhZGRpbjpvcGVuIHNlc2FtZQ==라는 문자열을 만든다. 인코딩 된 문자열에서 사용자 이름과 암호를 추출하는 일은 매우 간단하며, 많은 유명한 보안프로그램들은 실행중에(on the fly) 이러한 작업을 할 수 있다.
(*주 : on the fly라는 의미가 걸리긴 하는데, 이것은 어딘가에 페이지를 임시로 저장한 후 Base64인코딩 문자열을 추출하여 그것을 디코딩하는 작업을 하는 것이 아닌, 패킷검출과 동시에 바로 디코딩하여 사용자 이름과 암호를 추출할 수 있다.. 라고 이해가 된다)

사람들은 이름과 암호를 평문으로 바로 볼수 있기 때문에 보안을 위하여 Base64 인코딩을 한다고 생각하는데, 이것은 잘못된 생각이다. 대신, 기괴한(혹은 보안에 신경을 쓴) 암호들이 개행문자등의 HTTP 특수문자를 사용하여 HTTP 프로토콜 데이터 인코딩을 위반하기 때문에, 이를 방지하기 위하여 Base64 인코딩을 사용하는 것이다.

RFC 1945(Hypertext Transfer Protocol - HTTP1.0)에서 기본 접근 인증이 처음으로 정의되었다. RFC 2616 (Hypertext Transfer Protocol – HTTP/1.1)와 RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication)에서는 보안문제에 관한 사항들을 확인할 수 있다.

예제.
1. 클라이언트 요청(인증 없을 경우)
GET /private/index.html HTTP/1.0
Host: localhost

2. 서버 응답(401 오류, Basic realm(Secure Area)의 내용이 화면에 출력된다 )
HTTP/1.0 401 UNAUTHORIZED
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311

3. 클라이언트 요청(사용자 이름/암호 : Aladdin/open seasame)
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

4. 서버 응답(로그인 완료)
HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476


=======================
위키피디아 페이지 전체내용이 좋아서 다 번역했는데, 이건 하필이면 글을 쓰는 도중에 티스토리 서버에 문제가 생겨서 자동저장도 안되고, 글저장도 안돼서 처음부터 다시 번역을 해야했다. (나름 머리써서 절전모드로 멈춰놓고 다시 작성하려고 했는데 세션기간이 지나서 작성실패ㅠㅠ)
툭하면 점검이고 불안불안 한거 보면 데이터 백업을 주기적으로 해서 항항 대비해야겠다는 마음이 들 정도다, 서비스 기간이 짧았던 것도 아닌데 왜 이런 일이 생겨날까.. 아직까지 티스토리와 비견되는 서비스가 없어서 계속 사용하긴 하지만 만약..... 새해 첫날 액땜을 제대로 했다고 생각하고, 더욱 발전된 티스토리가 되었으면 좋겠다. 개발하는 입장에서 생각할때 차마 까댈수만은 없다. 관계자 여러분 ㄳㄳ~~

참고로 위에서 나오진 않았지만, 로그인 이후에 다른 페이지를 접속하려고 할때에는 쿠키라든가 그런게 적용이 되지 않기 떄문에, Authuntication(Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==)을 어딘가에 저장시켜놓고 요청할 때마다 포함시키는 방법를 사용해야 한다.


댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.