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

DARTZ·2022년 7월 17일
0

HTTP 완벽 가이드

목록 보기
6/11

웹사이트에 있는 개인의 프로필이나 개인이 작성한 문서는 해당 소유자의 동의 없이는 권한이 없는 사용자가 볼 수 없어야 한다. 그러기 위해서는 서버가 사용자가 누구인지 식별할 수 있어야 한다. 인증은 당신이 누구인지 증명하는 것이다. 보통 사용자 이름과 비밀번호를 입력해서 인증한다. HTTP는 자체적인 인증 관련 기능을 제공한다.

1. 인증

인증은 당신이 누구인지 증명하는 것이다. 하지만 완벽한 인증이란 없다.

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

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

2) 인증 프로토콜과 헤더

HTTP는 필요에 따라 고쳐 쓸 수 있는 제어 헤더를 통해, 다른 인증 프로토콜에 맞추어 확장할 수 있는 프레임워크를 제공한다.

3) 보안 영역

웹 서버는 기밀문서를 보안 영역 그룹으로 나눈다. 보안 영역은 저마다 다른 사용자 권한을 요구한다.

2. 기본 인증

기본 인증은 가장 잘 알려진 HTTP 인증 규약이다. 거의 모든 주요 클라이언트와 서버에 기본 인증이 구현되어 있다.

1) 기본 인증의 예

<1> 사용자가 요청
<2> 서버가 WWW-Authenticate 헤더와 함께 개인 가족사진에 접근하는 데 필요한 비밀번호를 요구하는 401 Authorization Required 응답을 반환한다.
<3> 브라우저가 401 응답을 받고 관련 영역에 관한 사용자 이름과 비밀번호를 요구하는 대화상자를 띄운다.
<4> 서버가 사용자 이름과 비밀번호를 디코딩하고, 그 값이 정확한지 검사한 후, 문제가 없으면 200응답과 함께 요청 받았던 문서를 보낸다.

2) Base-64 사용자 이름/비밀번호 인코딩

HTTP 기본 인증은 사용자 이름과 비밀번호를 콜론으로 이어서 합치고, base-64 인코딩 메서드를 사용해 인코딩한다.

Base-64란?
-> 8비트 바이트로 이루어져 있는 시퀀스를 6비트 덩어리 시퀀스로 변환한다. 각 6비트 조각은 대부분 문자와 숫자로 이루어진 특별한 64개의 문자 중에서 선택된다.

3) 프락시 인증

중개 프락시 서버를 통해 인증할 수도 있다. 어떤 회사는 사용자들이 회사의 서버나 LAN이나 무선 네트워크에 접근하기 전에 프락시 서버를 거치게 하여 사용자를 인증한다.

3. 기본 인증의 보안 결함

기본 인증은 단순하고 편리하지만 안심할 수는 없다. 기본 인증은 악의적이지 않은 누군가가 의도치 않게 리소스에 접근하는 것을 막는데 사용하거나, SSL 같은 암호 기술과 혼용된다.

종합해보면, 기본 인증은 일반적인 환경에서 개인화나 접근을 제어하는데 편리하며, 다른 사람들이 보지 않기를 원하기는 하지만, 보더라도 치명적이지 않는 경우에는 여전히 유용한다. 이렇게 기본 인증은 호기심 많은 사용자가 우연이나 사고로 정보에 접근해서 보는 것을 예방하는 데 사용한다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글