HTTP 인증 방식에 대해 설명

박재용·2021년 1월 16일
0
post-custom-banner

HTTP 인증 방식에 대해 설명해보시오

1.basic 인증

기본 인증 방식으로 클라이언트에 대한 사용자 이름과 암호를 base64로 인코딩 문자열을 보낸다. 보편적으로 사용하는 방식이지만
스니핑 공격에 취약하다. 따라서 보안적인 측면에서는 다른 인증 방식을 사용하는 것이 좋다.

2.digest 인증
사용자명, 패스워드 등을 조합하여 md5 값으로 인증한다. 기본 인증보다 보안이 강화된 인증 방식이다.
동작원리는 클라이언트에서 페이지를 요청하면 서버는 digest 인증이 필요하다고 통보하고 클라이언트는 사용자 아이디, 패스워드를 입력하면 서버+클라이언트 정보 병합 후 md5로 암호화 시켜 전송한다.

MD5란 Messages-Digest algorithm5 약자로서 128비트 암호화 해시 함수이다. 주로 무결성 검사 등에 사용된다.

3.ssl 클라이언트 인증
HTTPS의 클라이언트 인증서를 이용한 인증 방식으로서 단독으로 사용되지 않고 폼 베이스 인증과 합쳐져서 이용되고 있다.

인증이 필요한 리소스의 리퀘스트가 있을 경우 서버는 클라이언트에게 클라이언트 증명서를 요청하고
사용자는 클라이언트 증명서를 선택 후 서버 송신하고 서버는 클라이언트의 증명서를 검증하여 검증 결과가 정확하다면 클라이언트의 공개키를 취득 후 보안 세션이 이루어진다.

4.폼 베이스 인증
basic 인증이나 digest 인증은 사용상의 문제와 보안적인 문제로 사용이 되지 않고, ssl 클라이언트 인증도 도입 비용이나
운용 비용의 문제로 널리 사용하지 못하고 있다.
폼 베이스 인증 방식은 http 프로토콜로서 표준 사양이 결정되어 있지 않으나 일반적으로 자주
사용되고 있는 방법으로는 세션 관리를 위해 쿠키를 사용하는 방법이다.
의 방법은 아래와 같다.

클라이언트와 서버에 있는 유저 ID나 패스워드 등의 자격 정보를 포함한 리퀘스트를 송신한다. 보통은 POST 메소드가 사용되어 엔티티 바디에 자격 정보를 저장한다.
서버 측은 유저를 식별하기 위해서 세션 ID를 발행한다. 클라이언트에서 수신한 자격 정보를 검증하는 것으로 인증을 하고,
그 유저의 인증 상태를 세션 ID와 연관 지어 서버 측에 기록한다. 클라이언트 측에 송신할 때는 SET-COOKIE 헤더 필드에 세션 ID를 저장해서 리스폰스를 반환한다.
서버 측에서 세션 ID를 받은 클라이언트는 쿠키로 저장한다. 다음번에 서버에 리퀘스트를 송신하는 때에는 브라우저가 자동으로 쿠키를 송출하기 때문에 세션 ID가 서버로 송신되면서 인증이 된다.

http 통신의 진행 과정 7단계


HTTP 통신은 기본적으로 '요청(Request)'과 '응답(Response)'으로 이루어져 있다.

클라이언트가 서버에 요청을 보내면, 그에 맞는 응답 결과를 돌려주고, 클라이언트는 사용자에게 서버로부터 응답받은 결과를 보여주는 것이다.

우리가 http://naver.com으로 요청을 보내면, 우리는 클라이언트인 웹 브라우저를 통해서 네이버 서버에 네이버 시작 페이지를 보여달라는 요청을 하는것이고, 네이버 서버는 요청을 받으면 네이버 시작페이지에 해당하는 html 페이지를 클라이언트에 응답한다.

HTTP 통신은 기본적으로 연결이 되어 있지 않다. 연결이 되어 있지 않다는 것은 클라이언트가 서버에 요청을 보내고, 서버로부터 필요한 파일을 모두 받고 나면 접속이 종료(Connection Close)된다.

HTTP request 구성


1. Start Line
HTTP 메소드 / Request target / HTTP version
HTTP 메소드 : 요청의 의도를 담고 있음 ex) GET, POST
Request target : HTTP 요청이 전송되는 목표 주소
HTTP version : 버전에 따라 요청 메시지 구조나 데이터가 다를 수 있어서, version을 명시
2. Header
HTTP 요청 그 자체에 대한 정보를 담고 있다

1) 자주 사용되는 Header 정보

Host

  • 요청이 전송되는 target의 호스트의 URL 주소를 알려 주는 헤더.

User-Agent

  • 요청을 보내는 클라이언트에 대한 정보 (ex. 웹 브라우저에 대한 정보)

Accept

  • 해당 요청이 받을 수 있는 respons body 데이터 타입을 알려 주는 헤더.

Connection

  • 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 연결을 유지할 것인지 아닌지에 대해 알려주는 헤더.

Content-Type

  • HTTP 요청이 보내는 메시지 body의 타입을 알려주는 헤더.

Content-Length

  • HTTP 요청이 보내는 메시지 body의 총 사이즈를 알려주는 헤더.
  1. Body
    HTTP 요청이 전송하는 데이터를 담고 있는 부분
    전송하는 데이터가 없다면 body 부분은 비어있다 (위 사진의 경우, Body가 없음
  • Session이란?

  • HTTP 1.0/1.1/2.0/3.0의 특징에 대해 설명 할 것

출처 -

profile
박재용이란 사람이 복습을 하기위해 만든 벨로그 입니다 . 잘부탁드려요
post-custom-banner

0개의 댓글