8장 누가 액세스하고 있는지를 확인하는 인증
8.1 인증이란?
아래와 같은 정보들로 인증을 할 수 있다.
패스워드
원타임 토큰
전자 증명서
바이오 매트릭스
IC 카드
HTTP에서 사용하는 인증 방법
- BASIC
- DIGEST
- SSL 클라이언트
- 폼 베이스
8.2 BASIC 인증
- 리퀘스트에 인증이 필요한 경우 401과 함께 인증 방식과 Request-URI의 보호 공간을 식별하기 위한 문자열을 WWW-Authenticate 헤더 필드에 포함해서 리스폰스를 반환한다.
- 클라이언트는 ID와 패스워드를 콜론으로 연결한 문장을 Base64 형식으로 인코드하여 Authorization 헤더 필드에 포함해서 보낸다.
- 서버는 인증 정보가 정확한지 판단한다.
8.3 DIGEST 인증
챌린지 리스폰스 방식이 사용되고 있다.
최초에 상대방에게 인증 요구를 보내고 상대방 측에서 받은 챌린지 코드를 사용해서 리스폰스 코드를 계산한다.
- 리퀘스트에 인증이 필요하면 401과 함께 인증 방식과 Request-URI의 보호 공간을 식별하기 위한 문자열을 WWW-Authenticate 헤더 필드에 포함해서 리스폰스를 반환한다. WWW-Authenticate 헤더 필드에는 realm과 nonce 정보가 반드시 포함되어야 한다. 클라이언트와 이 값을 서버에 보내는 것으로 인증한다.
- 클라이언트는 DIGEST 인증을 위해 필요한 정보를 Authorization 필드에 포함해서 반환한다. 반드시 포함되어야 하는 정보는 username, realm, nonce, uri, reponse이며 realm, nonce는 서버에서 받은 것을 사용한다.
- 서버는 인증 정보를 판단하고 정확한 경우에는 리소스와 함꼐 리스폰스를 반환한다.
8.4 SSL 클라이언트 인증
HTTPS 클라이언트 인증서를 이용한 인증 방식이다.
8.4.1 SSL 클라이언트 인증의 인증 수순
미리 증명서를 클라이언트에 설치해놔야 한다.
- 리퀘스트에 인증이 필요하면 서버는 Certificate Request라는 메시지를 보낸다.
- 유저는 클라이언트 증명서를 선택한다. 그리고 서버에 Client Certificate라는 메시지와 함께 보낸다.
- 서버는 클라이언트 증명서를 검증한다.
8.4.2 SSL 클라이언트 인증은 2-factor 인증에서 사용된다.
8.4.3 SSL 클라이언트 인증은 이용하는데 비용이 필요하다.
8.5 폼 베이스 인증
대부분의 경우 아이디, 패스워드로 검증 성공 여부를 결정한다.
8.5.1 인증의 대부분은 폼 베이스 인증
BASIC 인증이나 DIGEST 인증은 사용상의 문제와 보안적인 문제로 거의 사용하고 있지 않다.
8.5.2 세션 관리와 쿠키에 의한 구현
- 클라이언트가 서버에 자격 정보를 전달
- 서버는 세션 ID를 발행하고 인증 상태를 기록하여 쿠키로 보낸다.
- 이후에 클라이언트는 쿠키에 세션 ID를 전달한다.
- 서버는 세션 ID를 검증한다.
'TIL > 개발' 카테고리의 다른 글
그림으로 배우는 Http & Network Basic - 10장 (1) | 2024.01.06 |
---|---|
그림으로 배우는 Http & Network Basic - 9장 (1) | 2024.01.06 |
그림으로 배우는 Http & Network Basic - 7장 (1) | 2023.12.28 |
그림으로 배우는 Http & Network Basic - 6장 (0) | 2023.12.25 |
그림으로 배우는 Http & Network Basic - 5장 (0) | 2023.12.25 |