HTTP Digest 인증
출처 : David Gourley and Brian Totty, "HTTP: The Definitive Guide (Definitive Guides)", O'Reilly, 2002
특징
- HTTP header 내에 유저네임과 비밀번호를 암호화하여 전달하는 방식
- nonce를 사용하기 때문에 인증 체결을 가로채서 재현하지 못함
- 구현 방법에 따라 메시지 내용 위조 방지 가능
단점
- 해쉬 알고리즘으로 MD5를 사용하기 때문에 보안레벨이 낮음
- MD5 해쉬값 입력 : 939e7578ed9e3c518a452acee763bce9
- 복호화된 해쉬값 : Mufasa:testrealm@host.com:Circle Of Life
- CSRF 공격에 취약
- 계정별 API 실행 권한을 설정하여 보완
- 로드 밸런싱 등의 목적으로 여러 대의 서버가 존재할 경우 세션 관리 기법 필요
- Sticky Session 사용 (AWS의 ELB가 지원)
- 세션 클러스팅 사용
토큰 기반 인증
출처 : 조대협의 블로그, http://bcho.tistory.com/887
특징
- 최초 1회만 계정 정보를 전송하고 이후에는 서버가 생성한 토큰을 사용하는 방식
- Digest 인증 사용하거나 더 강화된 Hash 알고리즘을 사용하여 비밀번호 관리
- 토큰이 노출되더라도 계정 정보는 보호할 수 있음
- OAuth 등의 인증 방식에서 사용
단점
- 제 3자가 토큰을 탈취하여 API 실행 가능 (세션 하이재킹)
- 토큰 만료 시간, 토큰에 매칭되는 IP 검사 등을 통해 보완
- 계정별 API 실행 권한 설정하여 보완
- Secure Cookie(Signed Cookie)로 토큰 전달하여 노큰 노출 방지
- 토큰을 Response Body가 아닌 Secure Cookie에 넣어서 전달
- Secure Cookie는 HTTPS를 통해서만 전송 가능
- Cookie에 HTTP ONLY 옵션을 추가하면 스크립트단에서 Cookie를 읽거나 조작할 수 없음
Cookie는 Request 시 웹브라우저에 의해 자동 전송됨 - 로드 밸런싱 등의 목적으로 여러 대의 서버가 존재할 경우 토큰 관리 기법 필요
참고자료
- REST API의 이해와 설계-#3 API 보안
- 빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2
- 보안: 크로스 사이트 요청 위조(Cross-Site Request Forgery) 공격 방지하기
- 오픈소스 데이터그리드를 이용한 서로 다른 WAS 간의 세션 클러스터링
'Network' 카테고리의 다른 글
tcp_tw_reuse와 SO_REUSEADDR의 차이 (0) | 2017.02.08 |
---|---|
OAuth2.0 (0) | 2017.01.19 |
[TCP] window size full (0) | 2015.03.18 |
[gsoap] 웹서버 오버헤드를 줄이기 위한 gsoap 버퍼링 구현 (0) | 2015.03.05 |
[gsoap] recv, send 함수 흐름 (0) | 2015.02.27 |