ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 인증이란 무엇인가
    CS지식/네트워크 2021. 6. 17. 22:43

    인증이란 무엇일까?

    웹을 통해서는 정말 다양한 서비스를 받을 수 있다.

    우리가 관심을 가지고 있는 분야에 대한 정보나 뉴스, 검색어를 통한 서칭 등 누구나 공용으로 이용할 수 있는 서비스들이 있다.

    하지만, 이러한 공용으로 데이터를 사용하여 받는 서비스 이외에 웹에서는 허가된 사용자만 데이터에 접근하여 개인적인 서비스를 받기도 한다.

    예를 들어 메일을 주고 받거나 요즘에 자주 사용하는 간편결제시스템을 이용하는 등 이러한 서비스는 개인적인 데이터에 접근하여 받는 서비스이다.

    이러한 개인적인 서비스를 받거나 데이터에 접근하기 위해서 서버는 사용자가 누구인지 식별할 수 있어야한다.

    하지만 서버가 단순히 접근한 사용자를 식별만해서 private한 데이터를 접근하게 하는 것이 아닌 사용자가 누구인지 증명을 해야하는 단계가 필요하다.

    여기서 사용자가 누구인지 증명하는 작업이 인증이다.

    우리가 자주 접하는 인증방법은 아이디와 비밀번호를 이용한 로그인이 있을 것이다.

    HTTP는 자체적인 인증 관련 기능을 제공하는데 지금부터 HTTP 인증과 기본이 되는 기본 인증을 알아보자.

     

     

    HTTP에는 사용자 인증을 하는 데 자체 인증요구/응답 기능을 제공한다.

    클라이언트가 리소스를 얻기 위한 요청 메시지를 보냈을 때, 서버는 요청을 처리하는 대신에 사용자가 누구인지를 알기 위한 '인증 요구'로 응답할 수있다.

    클라이언트는 응답을 받으면 사용자에게 인증을 해야한다는 것을 알린다.

    사용자의 인증 정보와 함께 다시 요청을 보내면 서버는 인증 정보를 확인해 맞다면 요청을 처리해준다.

     

    HTTP에는 기본 인증과 다이제스트 인증 두 가지의 공식적인 인증 프로토콜이 있다.

    오늘은 기본 인증에 대해 알아보자.

    기본 인증을 위해서는 필요에 따라 고쳐 쓸 수 있는 제어 헤더를 통해 이루어진다.

    아래의 표를 보면 각 단계에 맞는 헤더의 형식과 그에 대한 설명이 나와있다.

    단계 헤더 설명 메서드/ 상태
    요청   처음 클라이언트가 요청하는 단계로 인증 정보와 헤더는 없다. GET
    인증 요구 WWW-Authenticate 서버가 인증이 필요하다면 해당 헤더를 통해 사용자의 이름과 비밀번호를 제공하라는 지시를 하고 401 상태 정보와 함께 요청을 반려한다. 401 Unauthorized
    인증 Authorization 클라이언트는 요청을 다시 보낼 때 인증 알고리즘과 사용자 이름, 비밀번호를 기술한 Authorization 헤더를 보낸다. GET
    성공 Authentication-Info 서버는 받은 인증 정보가 정확하면 리소스와 함께 응답한다.
    Authenication-Info 헤더는 선택사항으로 특정한 인증 알고리즘에 따라 인증 세션에 관한 추가 정보를 기술해서 응답하기도 한다.
    200 OK

    그림을 보며 기본 인증의 방식에 대해 자세히 알아보자.

    서버가 처음 요청을 받으면 클라이언트에게 응답을 보낼 때 401 Unauthorized와 함께 WWW-Authenticate 헤더를 기술해서 어디서 어떻게 인증할지를 알려준다.

    클라이언트가 응답을 받으면 인코딩된 비밀번호와 인증 파라미터들을 Authorization 헤더에 담아 요청을 다시 보낸다.

    서버는 받은 인증 정보가 정확하다면 정상적인 상태 코드를 반환한다.

     

     

    위 그림의 메시지에서 궁금한 점이 생길 것인데 첫 번째 응답 메시지에서 WWW-Authenticate 헤더에 담긴 realm은 무엇일까?

    realm은 요청 받은 리소스 집합의 이름을 따옴표로 감싼 것으로 사용자는 이 정보를 보고 어떤 비밀번호를 사용해야하는지 알 수 있다.

    웹 서버는 기밀문서를 보안 영역(realm)으로 나누어 관리하는데 보안 영역마다 다른 사용자 권한을 요구한다.

    예를 들어, 웹 서버에 서로 다른 보안 영역(realm) 2개가 있다고 생각해보자.

    하나는 관리자가 볼 수 있는 리소스 집합이고 다른 하나는 서비스 사용자의 사진이나 동영상 등의 집합이다.

    웹 서버에 접근하여 리소스를 요청하는 사용자는 서로 다른 영역으로 접근할 것이다.

    개인 유저는 자신의 사진이나 동영상 등의 리소스 집합 영역에는 인증을 통해 접근 할 수 있지만 관리자가 볼 수 있는 리소스 집합 영역의 접근 권한을 주어지지 않는다.

    댓글

Designed by Tistory.