2021-11-13 그림으로 배우는 HTTP & Network (10주차)
액세스 인증
HTTP에서 사용하는 인증 방법
- BASIC 인증
- DIGEST 인증
- SSL 클라이언트 인증
- 폼 베이스 인증
BASIC 인증
- BASIC 인증이 필요한 리소스에 리퀘스트가 있을 경우에는 서버가 401상태코드와 함께 인증방식을 WWW-Authenticate 헤더필드에 포함해서 리스폰스 반환
- 상태코드 401을 받은 클라이언트는 BASIC 인증을 위해서 유저 ID랑 패스워드를 Base64인코드 해서 다시 리퀘스트 송신
- 서버는 인증 정보가 정확한지 확인
- BASIC 인증에서 Base64 인코딩은 암호화가 아니기 때문에 위험
- 한번 인증하면 일반 브라우저에서는 로그아웃 할 수 없다.
DIGEST 인증
- DIGEST 인증은 챌린지 리스폰스 방식이 사용되고 있어 패스워드를 있는 그대로 보내는 일은 없다.
- 서버측에서 받은 챌린지 코드를 사용해서 리스폰스 코드를 계산하고 상대에게 송신하여 인증하는 방법
SSL 클라이언트 인증
- HTTPS의 클라이언트 인증서를 이용한 인증 방식
- 인증이 필요한 리소스의 리퀘스트가 있었을 경우에 클라이언트 증명서를 요구하는 “Certificate Request”라는 메시지를 송신합니다.
- 유저는 송신하는 클라이언트 증명서를 송신
- 서브에서 검증해서 클라이언트의 공개키를 취득
세션 관리와 쿠키
- HTTP는 방금 인증을 성공했던 유저라는 상태를 유지할 수 없다. 상태 관리가 안되기 때문에 세션관리와 쿠키를 사용
- 서버에 유저 ID나 패스워드 등의 자격정보를 포함한 리퀘스트 송신
- 서버는 유저를 식별하기 위해서 세션 ID를 발행한다. 클라이언트 측에 송신할 때는 Set-Cookie 헤더 필드에 세션 ID를 저장해서 리스폰스 반환.
- 클라이언트는 세션 ID는 쿠키로 저장
Written on November 13, 2021