250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준 장학금
- 엔티티 그래프
- 최대 힙
- python
- 스케줄링
- JVM
- 연결리스트
- SpringSecurity
- 강화학습
- HTTP
- JPA
- 알고리즘
- 최소힙
- Kruskal
- 연결리스트 종류
- spring
- 백준장학금
- MSA
- jpa n+1 문제
- 완전이진트리
- 프로세스
- 이분탐색이란
- 자료구조
- 운영체제
- posix
- 멀티프로세서
- heapq
- 점근적 표기법
- AVL트리
- 힙트리
Archives
- Today
- Total
KKanging
[http 완벽 가이드] 12장 기본 인증 본문
이 내용은 http 완변 가이드란 책을 읽고 정리한 내용입니다.
더 자세한 내용이 궁금하시면 책을 직접 읽어보시는 걸 추천합니다.
12장 기본 인증
- 웹에서 사용자가 비밀스러운 업무를 보기위해 다른 사용자는 통제하고 해당 사용자는 허락해야한다.
- 그러기 위해서는 사용자에 대한 인증이 필요하다.
- 이 장에선 기본 인증에 대해 배우고 다음장에서는 다이제스트 인증이라고 불르는 더 강력한 인증 기술을 다룬다.
1. 인증
- 인증은 당신이 누구인지 증명하는 것이다.
- 신분증이나 PIN 입력같은 행위를 해서 당신이 누구인지 증명한다.
1.1 HTTP 인증요구/응답 프레임 워크
- HTTP 는 사용자 인증을 하는데 사용하는 자체 인증요구/응답 프레임워크를 제공한다.
- 웹 애플리케이션이 HTTP 요청 메시지를 받으면, 서버는 요청을 처리하는 대신에 현재 사용자가 누구인지를 알 수 있게 비밀번호 같이 개인 정보를 요구하는 인증 요구로 응답할 수 있다.
1.2 인증 프로토콜과 헤더
단계 | 헤더 | 설명 | 메서드/상태 |
---|---|---|---|
요청 | 첫 번째 요청에는 인증 정보가 없다 | GET | |
인증 요구 | WWW-Authenticate | 서버는 사용자에게 인증을 요구하며 401 상태 정보로 요청을 반려한다.서버에는 각각 다른 비밀번호 영역이 있으므로 WWW-Authenticate 헤더에 해당 영역을 설명해 놓는다. | 401 Unathorized |
인증 | Authorization | 클라이언트는 요청을 다시 보내는데, 인증 알고리즘과 사용자 이름과 비밀번호를 기술한 Authorization 헤더를 함께 보낸다. | GET |
성공 | Authentication-Info | 인증 정보가 정확하다면, 서버는 문서와 함께 응답한다.특정 인증 알고리즘은 선택적 헤더인 Authentication-Info에 인증 세션에 관한 추가 정보를 기술해서 응답하기도 한다. | 200 OK |
- 요청을 보냄 | |||
- 서버가 사용자에게 인증요구를 보냄. 401 Unauthorized + WWW-Authenticate 헤더(어디서 어떻게 인증할지 설명) | |||
- 클라이언트는 Authorization 헤더에 인코딩된 비밀번호와 그 외 인증 파라미터(주로 base-64 인코딩)를 담아서 요청을 보냄 | |||
- 응답. 추가적으로 인증 알고리즘에 대한 정보를 Authentication-Info 헤더에 기술할 수도 있음 |
1.3 보안영역
- HTTP 가 어떻게 각 리소스마다 다른 접근 조건을 다루는지 설명할 필요가 있다.
- WWW-Authenticate 헤더에 realm 지시자가 기술되어 있는걸 볼 수 있다.
- 웹 서버는 기밀 문서를 보안 영역(realm) 그룹으로 나눈다. 보안 영역은 저마다 다른 사용자 권한을 요구한다.
- WWW-Authenticate: Basic realm=”Corporate Finalcials” 를 입력한다면 회사 재무 영역에 접근하는 것을 볼 수 있다.
2. 기본인증
2.1 기본 인증의 예
- 기본 인증의 절차는 위에서 설명했듯이 클라이언트가 리소스에 접근 했을때 그 영역이 보안영역이면 서버는 인증 요청을 보낼 것이다.
- 브라우저는 로그인 화면을 띄우고 입력한 뒤 요청을 보내고
- 인증이 완료되면 리소스를 보여준다.
2.2 Base-64 사용자 이름/비밀번호 인코딩
- 사용자가 서버에게 로그인 정보를 넘길때 Base-64라는 인코딩 메서드를 이용해서 인코딩하고
- 서버는 메시지를 받고 디코딩한다.
- 전송 중에 원본 문자열이 변질될 걱정 없이 원격에서 디코딩할 수있다.
2.3 프락시 인증
- 중개 프락시 서버를 통해 인증할 수도 있다. 어떤 회사는 사용자들이 회사의 서버나 LAN이나 무선네트워크에 접근하기 전에 프락시 서버를 거치게 하여 사용자를 인증한다.
- 이는 프락시 서버에서 접근 정책을 중앙 관리 할 수 있기 때문에 회사 리소스 전체에 대해 통합적인 접근 제어를 하기 위해 프락시 서버를 사용하면 좋다.
- 프락시 인증은 웹 서버의 인증과 헤더와 상태 코드만 다르고 절차는 같다.
3. 기본 인증의 보안 결함
- 기본 인증은 단순하고 편리하지만 안심할 수는 없다. 기본 인증은 악의적이지 않은 누군가 의도치 않게 리소스에 접근하는 것을 막는데 사용하거나, SSL 같은 암호 기술과 혼용한다.
- 다음은 보안 결함이다.
- 쉬운 디코딩
- 보안 비밀번호가 디코딩하기에 더 복잡한 방식으로 인코딩되어 있다고 하더라도, 여전히 제 삼자는 읽기 힘든 사용자 이름과 비밀번호를 캡처한 다음, 그것을 그대로 원 서버에 보내서 인증에 선공하고 서버에 접근할 수 있다.
- 사용자가 다른 사이트에 동일한 아이디 비번을 사용한 경우 쉽게 다른 사이트에 대조해봄
- 메시지의 인증 헤더를 건드리지는 않지만 그 외 다른 부분을 수정해서 트랜잭션의 본래 의도를 바꿔버리는 프락시나 중개자가 중간에 개입하는 경우
- 기본 인증은 가짜 서버 위장에 취약
- 기본인증은 일반적인 환경에서 개인화나 접근을 제어하는데 편리하다.
- 하지만 보안적인 결함이 있고 SSL과 같은 암호화된 데이터 전송과 함께 연계해서 사용할 수 있다.
'cs > http' 카테고리의 다른 글
[http 완벽 가이드] 14장 보안 HTTP (0) | 2023.08.20 |
---|---|
[http 완벽 가이드] 13장 다이제스트 인증 (0) | 2023.08.20 |
[http 완벽 가이드] 11장 클라이언트 식별과 쿠키 (0) | 2023.08.17 |
[http 완벽 가이드] 10장 HTTP/2.0 (0) | 2023.08.17 |
[http 완벽 가이드] 9장 웹 로봇 (0) | 2023.08.16 |