인증을 무엇으로 할까?
- 등록된 본인만이 알고 있는 정보
- 등록한 본인만이 가지고 있는 정보 등
- 패스워드, 원타임토큰, 전자증명서, 바이오매트릭스, IC카드
HTTP에서 사용하는 인증방법
- BASIC
- DIGEST
- SSL Client
- Form Base
1. BASIC 인증
HTTP/1.0에 구현된 인증방식
- 클라이언트: 리퀘스트 송신
- 서버:상태코드 401로 응답해서 인증이 필요하다는 것을 전달
- 유저가 ID와 패스워드를 입력하면, 브라우저가 자동적으로 Base64 로 변환
- 클라이언트: 유저ID와 패스워드를 Base64형식으로 인코드 한 것을 송신
- 서버: 인증 성공 시에는 상태코드 200 응답. 실패했을 경우 다시 상태코드 401로 응답
- 서버는 인증정보가 정확한지 여부를 판단함
단점:
Base64라는 인코딩 형식을 사용하고 있지만, 암호화는 아님
따라서 아무런 부가 정보 없이 복호하 가능
즉 HTTPS 등에서 암호화되지 않은 통신 경로 상 BASIC 인증을 해서 도청된 경우, 복호화 된 유저ID와 패스워드 뺏길 가능성 있음
한번 BASIC 인증을 하면, 일반 브라우저에서는 로그아웃 불가능(사용상 문제가 많고 보안등급이 낮음)
2. DIGEST 인증
BASIC 인증 약점 보완, HTTP/1.1에 소개
챌린지 리스폰스 방식 사용
- 최초 상대방에게 인증요구 보냄
- 상대방 측에서 받은 챌린지 코드를 사용해서, 리스폰스 코드 계산함
- 이 값을 상대에게 송신하여 인증함(패스워드 누출 가능성 낮음)
DIGEST 인증 수순
- 클라이언트: 리퀘스트 송신
- 서버: 상태코드 401로 응답해서 인증이 필요하다는 것을 전달하는 동시에 패스워드와 챌린지코드(nonce) 송신함
- 클라이언트: 패스워드와 챌린지 코드에서 리스폰스 코드(response)를 계산해서 송신
- 서버: 인증 성공 시 상태코드 200 응답, 실패 시 다시 상태코드 401 응답
3. SSL Client 인증
HTTPS의 클라이언트 인증서를 이용한 인증방식
- SSL Client 인증은 2-factor 인증에서 사용
- SSL Client 인증은, 폼 베이스 인증과 합쳐서 2-factor인증의 하나로서 이용
- 2-factor 인증: 이용자가 가진 다른 정보를 병용해서 인증하는 방법
- 첫번째 인증 정보로서, SSL 클라이언트 인증을 사용하여 클라이언트 컴퓨터를 인증
- 다른 인증정보로서, 패스워드를 사용하여 유저의 본인 확인을 함(본인이 올바른 컴퓨터에 엑세스하고 있음을 확인)
단점: SSL Client 인증은 이용하는데 비용이 든다
4. 폼 베이스(Form Base) 인증
- HTTP 프로토콜로서 사양이 정의되어 있는 인증방식은 아님
- 클라이언트가 서버상의 웹 애플리케이션에 자격정보(Credential)를 송신하여, 그 자격정보의 검증결과에 따라 인증하는 방식
- 대부분 사전 등록된 자격정보인 유저ID와 패스워드를 입력해서 웹 애플리케이션에 송신, 검증결과를 토대로 검증 성공여부 결정함
인증의 대부분은 폼 베이스 인증
- BASIC/DIGEST 인증의 문제: 사용상 문제, 보안문제
- SSL 클라이언트 인증의 문제: 도입비용 및 운용비용의 문제
세션 관리와 쿠키에 의한 구현
- HTTP는 스트레이트 프로토콜
- 방금 전에 인증을 성공했던 유저라는 상태를, 프로토콜 레벨에서는 유지 불가능
- 즉, 상태관리가 안됨(다음에 유저가 엑세스 하더라도 다른 유저들과 구별 불가)
- 세션 관리와 쿠키를 사용 => HTTP에 없는 상태관리기능을 보충
'컴퓨터과학 🖥️ > 네트워크' 카테고리의 다른 글
[Network] HTTP의 병목현상과 WebSocket (0) | 2024.08.16 |
---|---|
[Network] HTTPS 구조 (0) | 2024.08.15 |
[Network] HTTP 헤더 (0) | 2024.07.25 |
[Network] HTTP와 연계하는 웹 서버 (0) | 2024.07.09 |
[Network] HTTP 상태코드 (0) | 2024.07.02 |