답변:
다이제스트 인증은 사용자 이름, 암호, 서버 제공 nonce 값, HTTP 메서드 및 요청 된 URI에 해시 함수를 적용하여 암호화 된 형식으로 자격 증명을 전달합니다.
기본 인증은 암호화되지 않은 base64 인코딩을 사용합니다.
따라서 기본 인증은 일반적으로 https와 같은 전송 계층 보안이 제공되는 경우에만 사용해야합니다.
모든 세부 사항 은 RFC-2617 을 참조 하십시오.
HTTP 기본 액세스 인증
기본 인증은 사용자 이름 및 비밀번호 정보가 포함 된 암호화 문자열을 생성하기 위해 base64 인코딩 (암호화 아님)을 사용합니다. HTTP Basic은 SSL을 통해 구현 될 필요는 없지만, 그렇지 않으면 전혀 안전하지 않습니다. 그래서 나는 그것을 사용하지 않고 그것을 사용한다는 생각조차 즐겁게하지 않을 것입니다.
장점 :
단점 :
요약 하면 – 클라이언트를 제어하거나 SSL을 사용할 수있는 경우 HTTP 기본을 선택하는 것이 좋습니다. 하나의 요청 만하는 속도로 SSL의 속도 저하를 취소 할 수 있습니다.
기본 인증의 구문
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
HTTP 다이제스트 액세스 인증
다이제스트 액세스 인증은 해싱 (즉, 다이제스트 수단을 작은 조각으로 잘라 냄) 방법을 사용하여 암호화 결과를 생성합니다. HTTP 다이제스트 액세스 인증은 다음과 같이 작동하는보다 복잡한 형태의 인증입니다.
장점 :
단점 :
요약 하면 HTTP 다이제스트는 본질적으로 두 가지 이상의 공격에 취약하지만 SSL을 통한 HTTP 기본 암호로 강력한 암호화를 사용하는 서버는 이러한 취약점을 공유 할 가능성이 적습니다.
그러나 클라이언트를 제어 할 수없는 경우 SSL없이 기본 인증을 시도 할 수 있습니다. 이는 다이제스트보다 훨씬 덜 안전합니다.
RFC 2069 다이제스트 액세스 인증 구문
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617 다이제스트 액세스 인증 구문
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Postman에서 다음과 같이 보입니다.
노트 :
(송수신 된 패킷을 분석하는 도구)를 사용하여 두 HTTP 인증 의 차이점을 보자 Wireshark
.
1. HTTP 기본 인증
웹 서버가 요청한대로 클라이언트가 올바른 username : password를 입력 하자마자 웹 서버는 신임 정보가 올바른지 데이터베이스에서 확인하고 자원에 대한 액세스 권한을 부여합니다.
패킷이 송수신되는 방법은 다음과 같습니다.
첫 번째 패킷에서 클라이언트 는 리소스에서 POST 메소드를 사용하여 자격 증명을 채 웁니다 .- lab/webapp/basicauth
서버는 http 응답 코드 200으로 응답합니다 . 즉, username : password가 정확합니다.
이제 Authorization
헤더에서 기본 권한 부여 다음에 임의의 문자열이 표시됩니다.이 문자열은 인코딩 된 (Base64) 버전의 자격 증명 admin:aadd
(콜론 포함)입니다.
2. HTTP 다이제스트 인증 (rfc 2069)
지금까지 기본 인증은 네트워크를 통해 username : password 를 일반 텍스트로 전송하지만 다이제스트 인증은 해시 알고리즘을 사용하여 비밀번호 의 HASH 를 보냅니다 .
다음은 클라이언트의 요청과 서버의 응답을 보여주는 패킷입니다.
클라이언트가 서버가 요청한 자격 증명을 입력하자마자 암호는 response
알고리즘을 사용하여 변환 된 다음 서버로 전송됩니다. 서버 데이터베이스가 클라이언트가 제공 한 것과 동일한 응답을 갖는 경우 서버는 리소스에 액세스 할 수 있습니다 그렇지 않으면 401 오류입니다.
상기에서 Authorization
상기 response
문자열의 값을 사용하여 계산되는 Username
, Realm
, Password
, http-method
, URI
및 Nonce
이미지와 같이
따라서 다이제스트 인증이 해싱 (MD5 암호화)과 관련하여 더욱 안전하다는 것을 알 수 있으므로 Basic Auth에서는 Wireshark에 정확한 비밀번호가 표시되었지만 패킷 스니퍼 도구는 비밀번호를 스니핑 할 수 없습니다.
기본 인증 은 사용자 이름 및 비밀번호 정보가 포함 된 암호화 문자열을 생성 하기 위해 base 64 인코딩 을 사용 합니다.
다이제스트 액세스 인증은 해싱 방법을 사용하여 암호화 결과를 생성합니다.