Документация по Digest http://www.hardline.ru/4/38/4862/
Проверка Curl
curl -v —digest —user ‘User:Password’ «https://yandex.ru/MessageService/WebService.svc»
Система аутентификации на базе протокола HTTP Digest. Усиление модуля. |
||||||||||||||||||||||||||||||||
В статье «Система аутентификации на базе протокола HTTP Basic был рассмотрен алгоритм Basic аутентификации и с помощью него была построена система Basic аутентификации на основе ролей, работающая без специальной настройки IIS сервера и использующая базу данных для хранения учетных записей пользователей.У Basic есть один недостаток, а именно username и password передаются по сети открыто (clear text), base64 кодировка не может считаться защитой.
Аутентификация DigestВ этой статье будет рассмотрен алгоритм Digest аутентификации, решающей некоторые проблемы, имеющиеся у HTTP Basic Authentication. Например эта схема не передаёт password по сети открытым текстом. Официальное название схемы — «Digest Access Authentication». Расширим нашу систему из предыдущей статьи. К преимуществам Digest можно отнести следуещее:
Один сайт может одновременно использовать несколько систем защиты, например Basic и Digest Пришло время рассмотреть работу алгоритма Digest аутентификации: 1. Первый запрос от User Agent к Http Server заголовок Authorization пустой — значит server должен возвратить запрос на аутентификацию. Например такой: 2. ответ сервера: HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest realm="testrealm@host.com", qop="auth", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41", algorithm=MD5, stale=false Разберём заголовок WWW-Authenticate (как вы заметили, он усложнился по сравнению с заголовком Basic):
3. У юзера всплывает модальное окно, предлагающее ввести username и password (обратите внимание, окно отличается от Basic окна). Происходит запрос юзера для аутентификации: GET ... ... HTTP/1.1 Authorization: Digest username="Mufasa", realm="testrealm@host.com", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/dir/index.html", qop=auth, nc=00000001, cnonce="0a4f113b", response="6629fae49393a05397450978507c4ef1", opaque="5ccc069c403ebaf9f0171e9517f40e41" Теперь разберём заголовок Authorization:
4. Последовательность обработки запроса пользователя
Если что-то не так — переходим к пункту 6. Если всё ok — идём дальше (это ещё далеко не всё :)) 5. Проверка пароля пользователя
если HGENRESPONSE равен response в заголовке Authorization запроса юзера и nonce в порядке — всё ok, нет — переходим к пункту 6 6. выдаём состояние ответа сервера 401, поднимающее модальное окно как в пункте 2 иначе говоря формируем WWW-Authenticate по типу Digest |