УкраїнськаEnglishmRussian
Вхід/Новий
Тема без відповіді

HTTP Digest авторизация


Автор Повідомлення
Повідомлення створено: 22. 04. 2020 [12:09]
shdimka
Дмитрий Шабунов
Зареєстрован(а) с: 05.12.2011
Повідомлення: 35
Добрый день формучане

Кто нибудь имел опыт Digest авторизацией через исходящий сокет транспорт?
До сих пор никак не получается. Basic авторизация без проблем, но там и условий нет никаких, но есть необходимость запрашивать XML структуру с устройства посредством HTTP а устройство не поддерживает Basic.
Ответ с устройства разобрал на параметры. Все переменные проверил, и они соответсвуют тому что нужно. Составляю Digest ответ, но соеденение сбрасывается с ошибкой 104.

H1=SYS.strEncode(SYS.strDecode(MD5(user + ":" + realm + ":" + pass), "Bin"), "ToLower");
H2=SYS.strEncode(SYS.strDecode(MD5("GET:" + uri), "Bin"), "ToLower");
responce=SYS.strEncode(SYS.strDecode(MD5(H1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + H2), "Bin"), "ToLower");
digest_header = "Digest algorithm=\"" + algorithm + "\", username=\"" + user + "\", realm=\"" + realm + "\", nonce=\"" + nonce + "\", uri=\"" + uri + "\", responce=\""+responce+"\", cnonce=\""+SYS.strEncode(SYS.strDecode(MD5(cnonce), "Bin"), "ToLower") + "\", opaque=\"" + opaque + "\", qop=\"auth\", nc=00000001";
req=SYS.XMLNode("GET");
req.setAttr("URI",uri);
req.childAdd("prm").setAttr("id","Authorization").setText(digest_header);
SYS.Transport.Sockets.out_HTTP.messIO(req,"HTTP");

содержимое req после запроса:
<XMLNodeObj:GET URI="/cgi-bin/magicBox.cgi?action=getSerialNo" err="Error requesting: Connection reset by peer (104)">
</XMLNodeObj:GET>

Дмитрий



1061