TIL/2021

210827

마닐라 2021. 8. 28. 09:34

할일

HTTP&Network 책읽기(~228)

HTTP&Network 책

HTTP에서 사용하는 인증 방법

BASIC 인증 - 웹 서버와 클라이언트 사이에서 이뤄지는 인증 방식

서버가 Request를 송신했을 때 응답코드로 401 Authrization Required와 함께 인증방식과

WWW-Authenticate 헤더 필드에 포함해서 리스폰스를 반환한다.

401을 받은 클아이언트는 ID와 패스워드를 서버에 송신할 필요가 있다.

송신하는 문자열은 ID와 패스워드를 ":" 으로 연결한 문장이다.

(Base64 형식으로 인코드시켜서 송신)

이 문자열을 Authrization 헤더 필드에 포함해서 리퀘스트를 송신한다.

Base64가 암호화 방식은 아니기때문에 부가 정보 없이 복호화 할 수 있다.

사용 상의 문제와 보안 등급이 높지 않아 그다지 사용되고 있지 않다.

 

DIGEST 인증 - BASIC 인증의 약점을 보완하고 챌린지 리스폰스 방식이 사용되고 있다.

챌린지 리스폰스 방식은 최초에 상대방에게 인증 요구를 보내고 상대방 측에서 받은 챌린지

코드를 사용해서 리스폰스 코드를 계산한다.

1.클라이언트가 리퀘스트 송신

2.서버는 응답 코드로 401과 함께 패스워드와 챌린지 코드(nonce)를 송신한다.

3.클라이언트는 패스워드와 챌린지 코드에서 리스폰스 코드(reponse)를 계산해서 송신

4.인증 성공시 200 으로 응답하고 실패시 401로 재응답

BASIC 인증 방식에 비해 패스워드가 누출될 가능성은 줄어드나 BASIC 보다 낫다는게 전부이다.

 

SSL 클라이언트 인증 - HTTPS의 클라이언트 인증서를 이용한 인증 방식

SSL 클라이언트 인증을 할 때에는 사전에 클라이언트 증명서를 배포하고 인스톨 해둘 필요가 있다.

1.서버가 리퀘스트를 송신하면 클라이언트 증명서를 요구하는 "Certificate Request"라는 메세지를 송신

2.유저는 클라이언트 증명서를 선택하고 증명서를 "Client Certificate"라는 메세지를 송신

3.서버는 클라이언트 증명서를 검증하여 검증 결과가 정확하다면 클라이언트의 공개키를 취득

그 이후에 HTTPS에 의한 암호를 개시

 

SSL 클라이언트 인증은 주로 폼 베이스 인증과 합쳐 2-factor 인증의 하나로서 이용된다.

2-factor 인증이란 예를 들어 패스워드라는 한 개의 요소만이 아닌 다른 정보도 이용해서 인증하는 것

 

 

폼(form) 베이스 인증 - HTTP 프로토콜로서 사양이 정의되어 있는 인증 방식은 아님

클라이언트가 서버 상의 웹 애플리케이션 자격 정보를 송신하여 그 자격 정보의 검증결과에 따라 인증하는 방식

웹 애플리케이션에 따라 제공되는 인터페이스나 인증의 방법이 다양하다.

일반적으로 세션 관리를 위해서 쿠키를 사용하는 방법을 사용한다.

1.클라이언트가 자격 정보(유저 ID, 패스워드)를 입력하여 송신

2.서버가 유저에게 세션 ID를 발행하고 인증 상태를 기록(세션 ID로 쿠키를 송신)

3.쿠키로 클라이언트가 서버에게 세션 ID를 송신(쿠키로 세션 ID를 송신)

4.서버가 세션 ID를 검증 후 앞선 유저가 맞는지 판단

 

'TIL > 2021' 카테고리의 다른 글

210831  (0) 2021.08.31
210830  (0) 2021.08.30
210829  (0) 2021.08.29
210828  (0) 2021.08.28
210826  (0) 2021.08.26