Что такое дайджест-аутентификация?

Как Дайджест-аутентификация отличается от Стандартной аутентификации кроме передающих учетных данных как простой текст?

92
задан SoftwareGeek 19 July 2012 в 20:37
поделиться

2 ответа

Основное отличие состоит в том, что не требуется отправлять имя пользователя и пароль по сети в виде открытого текста. Он также невосприимчив к повторным атакам, поскольку использует одноразовый номер с сервера.

Сервер дает клиенту одноразовый номер использования (nonce), который он объединяет с именем пользователя, областью, паролем и запросом URI. Клиент запускает все эти поля с помощью метода хеширования MD5 для получения хеш-ключа.

Он отправляет этот хэш-ключ на сервер вместе с именем пользователя и областью для попытки аутентификации.

На стороне сервера тот же метод используется для генерации хэш-ключа, только вместо того, чтобы использовать пароль, введенный в браузер, сервер ищет ожидаемый пароль для пользователя в своей пользовательской БД. Он ищет сохраненный пароль для этого имени пользователя, выполняет тот же алгоритм и сравнивает его с тем, что отправил клиент. Если они совпадают, доступ предоставляется, в противном случае он может отправить обратно 401 Unauthorized (без входа или неудачный вход) или 403 Forbidden (доступ запрещен).

Дайджест-аутентификация стандартизирована в RFC2617 . В Википедии есть хороший обзор :

Вы можете думать об этом так:

  1. Клиент делает запрос
  2. Клиент получает одноразовый номер от сервера и 401 запрос аутентификации
  3. Клиент отправляет обратно следующий массив ответов (имя пользователя, область, generate_md5_key (nonce, username, realm, URI, password_given_by_user_to_browser)) (да, это очень упрощено)
  4. Сервер принимает имя пользователя и область (плюс он знает URI клиента запрашивает) и ищет пароль для этого имени пользователя.Затем он переходит и выполняет свою собственную версию generate_md5_key (nonce, username, realm, URI, password_I_have_for_this_user_in_my_db)
  5. . Он сравнивает вывод generate_md5 (), который он получил, с тем, который отправил клиент, если они совпадают с тем, что клиент отправил правильный пароль. Если они не совпадают, отправленный пароль был неверным.
147
ответ дан 24 November 2019 в 06:32
поделиться

Хэш учетных данных отправляется по сети.

HA1 = MD5(username:realm:password)

В Википедии есть отличная статья на эту тему

12
ответ дан 24 November 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: