시스템에 엑세스하는 권한을 가진 본인임을 확인하기 위해서는 [등록된 본인만이 알고 있는 정보] or [등록한 본인만이 갖고 있는 정보] 등으로 확인할 필요가 있다.
해당 정보는 다음과 같다.
1. 패스워드 : 본인만이 알고 있는 문자열 정보
2. 원타임 토큰 : 일회성의 패스워드
3. 전자증명서 : 본인(단말기)만이 갖는 정보
4. 바이오 매트릭스 : 지문, 홍채 등 본인의 신체 정보
5. IC 카드 등 : 본인만이 갖고 있는 정보
BASIC 인증
- 클라이언트 측에서 리퀘스트 송신
- 서버 측에서 상태 코드를 401로 응답하여 인증이 필요함을 전달
- 유저 ID, PW를 Base64 형식으로 인코드한 것을 송신
- 인증 성공 시 상태 코드를 200으로 응답, 인증 실패 시 상태 코드를 401로 응답
Basic 인증에서 Base64라는 인코딩 형식을 사용하고 있으나, 이것은 암호화가 아니기에 아무런 부가정보 없이 복호화할 수 있다.
=> HTTPS 등에서 암호화되지 않은 통신 경로 상에서 BASIC 인증을 해서 도청된 경우 복호화된 유저 ID, PW 강탈 가능성 존재
DIGEST 인증
- 클라이언트 측에서 리퀘스트 송신
- 서버 측에서 상태 코드를 401로 응답하여 인증이 필요함을 전달과 동시에 패스워드, 챌린지 코드를 송신
- 클라이언트 측에서 패스워드, 챌린지 코드에서 리스폰스 코드를 계산하여 서버에 송신
- 인증 성공 시 상태 코드를 200으로 응답, 인증 실패 시 상태 코드를 401로 응답
SSL 클라이언트 인증
- HTTPS의 클라이언트 인증서를 이용한 인증 방식으로 사전에 등록된 클라이언트에서의 엑세스인지 아닌지를 확인할 수 있다.
폼 베이스 인증
- 표준적인 사양이 결정되어 있지 않지만 일반적으로 사용하는 방법은 다음과 같다.
- 서버 측의 웹 어플리케이션 등에 의해 클라이언트가 송신해온 유저 정보를 사전에 등록된 것과 일치하는지 검증하며 이뤄진다.
- 그런데 HTTP는 스테이트리스 프로토콜이기에, 유저 정보를 들고 다닐 수 없습니다. 그래서 세션 관리와 쿠키를 사용하여 HTTP에 없는 상태 관리 기능을 보충해준다.