인증
HTTP의 인증요구/응답 프레임워크
- “요청 - 인증요구 - 인가 - 성공”의 과정을 거쳐 인증을 한다.
- 사용자가 다시 요청을 보낼 때는 인증 정보(사용자 이름과 비밀번호)를 첨부해야 한다.
인증 프로토콜과 헤더
- WWW-Authenticate
HTTP/1.0 401 Authorization Required WWW-Authenticate: Basic realm="Family"
- → 서버는 사용자에게
401 Authorization Required
응답코드를 함께 보낸다. - Authorization
GET /family/jeff.jpg HTTP/1.0 Authrization: Basic YnJpYW4tdG90dHk6T3ch
- → 서버로 인증시 인코딩된 비밀번호와 그 외 인증 파라미터를 담아 요청을 다시 보내야 한다.
- Authentication-info→ 추가적인 인증 알고리즘에 대한 정보를 해당 헤더에 담아 기술 할 수도 있다.
- → 요청이 성공적이라면
200 OK
응답코르들 보낸다.
보안 영역
- 웹 서버는 기밀문서를 보안 영역(
realm
) 그룹으로 나눈다. realm
은 사용자 이름과 비밀번호를 가지고 있는 사용자가 권한의 범위를 이해하는데 도움이 되어야 한다.
기본인증
- 사용자가 해당 문서에 접근하게 되면 서버는
200
상태코드 대신401
상태코드와 클라이언트가 접근하려했던 보안 영역을WWW-Authenticate
에 기술해 응답하여 인증을 요구한다. - 브라우저는 계정과 비밀번호를 암호화(base-64)되어 서버로 다시 보낸다.
인증요구/응답 | 헤더 문법과 설명 | 응답코드 |
---|---|---|
인증요구(서버→클라이언트) | WWW-Authenticate: Basic realm=”${문서 집합 정보}” | 401 Unauthorized |
인증응답(클라이언트→서버) | Authentication: Baisc ${base-64로 인코딩한 사용자 이름과 비밀번호} | GET |
base-64
- 8비트로 이루어진 시퀀스를 6비트 덩어리의 시퀀스로 변환하는 것
- 사용자 이름과 비밀번호를
콜론(:)
으로 잇고 해당 문자를base-64
로 인코딩하여 서버로 보낸다.
- 바이너리, 텍스트, 국제 문자 데이터 문자열을 받아서 전송할 수 있게 그 문자를 전송 가능한 문자인 알파벳으로 변환하기 위해 발명됐다. 전송 중에 원본 문자열이 변질될 걱정 없이 원격에서 디코딩할 수 있다.
- HTTP헤더에 사용 할 수 없는 문자(큰따옴표, 콜론, 캐리지 리턴)를 보낼 때도 사용 된다.
Proxy 인증
- 중개 Proxy 서버를 통해 인증하는 것
- ex) 회사의 서버나 LAN이나 무선 네트워크에 접근하기 전에 Proxy서버를 거치게하여 사용자를 인증한다.
- Proxy 서버에서 접근 정책을 중앙 관리 할 수 있기 때문에 통합적인 접근제어가 가능해진다.
Web Server | Proxy Server |
---|---|
비인증 상태 코드 : 401 | 비인증 상태 코드 : 407 |
WWW-Authenticate | Proxy-Authenticate |
Authorization | Proxy-Authorization |
Authorization-info | Proxy-Authorization-info |
기본 인증의 보안 결함
- 누구나 쉽게 디코딩 할 수 있는 형식으로 네트워크에 전송된다.
- 가짜 서버의 위장에 취약하다.
- 등 등
728x90
반응형
'Study > HTTP' 카테고리의 다른 글
19. 보안 HTTP (0) | 2024.06.09 |
---|---|
18. 다이제스트 인증 (1) | 2024.06.09 |
16. 클라이언트 식별과 쿠키 (1) | 2024.05.21 |
15. Web Robot (0) | 2024.05.21 |
14. 통합점 게이트웨이, 터널, 릴레이 (0) | 2024.05.21 |
댓글