Чем дайджест-проверка подлинности отличается от обычной проверки подлинности, кроме отправки учетных данных в виде простого текста?
Чем дайджест-проверка подлинности отличается от обычной проверки подлинности, кроме отправки учетных данных в виде простого текста?
Ответы:
Основное отличие состоит в том, что не требуется отправлять имя пользователя и пароль по сети в виде открытого текста. Он также невосприимчив к повторным атакам, поскольку использует одноразовый номер с сервера.
Сервер дает клиенту одноразовый номер (nonce), который он объединяет с именем пользователя, областью, паролем и запросом URI. Клиент запускает все эти поля с помощью метода хеширования MD5 для получения хеш-ключа.
Он отправляет этот хэш-ключ на сервер вместе с именем пользователя и областью для попытки аутентификации.
На стороне сервера тот же метод используется для генерации хэш-ключа, только вместо использования пароля, введенного в браузер, сервер ищет ожидаемый пароль для пользователя в своей пользовательской БД. Он ищет сохраненный пароль для этого имени пользователя, выполняет тот же алгоритм и сравнивает его с тем, что отправил клиент. Если они совпадают, доступ предоставляется, в противном случае он может отправить обратно 401 Unauthorized (без входа или неудачный вход) или 403 Forbidden (доступ запрещен).
Дайджест-аутентификация стандартизирована в RFC2617 . В Википедии есть хороший обзор :
Вы можете думать об этом так:
Хэш учетных данных отправляется по сети.
HA1 = MD5(username:realm:password)
Единственный способ получить хэш HA1 учетных данных - это знать пароль. Сервер знает HA1, но не знает пароль, который его сгенерировал. Если HA1 был известен злоумышленнику, он мог проникнуть в систему. Так что это не передается по проводам. Перед этим выполняется дополнительный хэш на основе одноразового номера и т. Д., И это должно согласовываться с аналогичным расчетом, выполняемым на сервере. Таким образом, пока сервер сохраняет HA1 закрытым, система в безопасности.