Доброго времени суток! Возникла проблема при создании класса-аутентификатора для REXLoader - никак не могу авторизироваться на сайте с Digest аутентификацией. Прошу не тыкать носом в классы QNetworkAccessManager и QAuthenticator - мои модули не совместимы с ними и используют иной способ генерации и разбора посылок/ответов от сервера, поэтому и реализую свой класс. Развернул на виртуалке свой apache + подключил модуль digest аутентификации, настроил тестовый сайт. Доступ через браузер проблем не вызвал, а вот rexloader не может успешно пройти проверку. Ниже привожу ответ сервера и посылку браузера firefox (только связанные с аутентификацией):
Свой класс я реализовал глядя на официальный RFC-2617, но там ничего не сказанно о nonce="rand-value=MD5(rand-value)". Я так понимаю, что это сделано, чтобы браузер мог проверить, корректно ли ему послан ответ сервера и что MD5("KkxqJ7PpBAA") равен "40dae3b4b27c8f059e8376fd56ea05939a07c696". Однако MD5("KkxqJ7PpBAA") не равен указанному в nonce хэшу, проверял и стандартными утилитами linux md5sum и даже онлайн сервисами генерации хэшей. Вот тут и возникает вопрос: что я делаю не так, или я что-то где-то недопонял?
Все решилось - не надо разделять nonce на фрагменты - используем для расчета ответа полностью KkxqJ7PpBAA=40dae3b4b27c8f059e8376fd56ea05939a07c696.
Подробнее о форматировании
Все решилось - не надо разделять nonce на фрагменты - используем для расчета ответа полностью KkxqJ7PpBAA=40dae3b4b27c8f059e8376fd56ea05939a07c696.
Отправить комментарий