Хорошо после экспериментирования немного я узнал, что смола называет мой метод аутентификации AbstractAuthenticator, который принимает объект HttpDigestCredentials вместо DigestCredentials (до сих пор не знаю, когда каждый из них), проблема в том, что HttpDigestCredentials не имеет метода getDigest(), вместо этого он имеет метод getResponse(), который не возвращает хеш или, по крайней мере, не сопоставимый.Аутентификация с помощью CustomAuthenticator, кого-то пожалуйста, просветите меня
После создания моего собственного хэша [[user: realmassword] [nonce] [method: uri]] хэш очень отличается, на самом деле я думаю, что getResponse() не возвращает дайджест, но, возможно, ответ сервера на браузер ?.
В любом случае, это мой отладки журнала:
USER:user:PASSWORD:password:REALM:resin:METHOD:GET:URI/appe/appe.html:NONCE:HsJzN+j+GQD:CNONCE:b1ad4fa1ba857cac88c202e64528bc0c:CLIENTDIGEST:[[email protected]:SERVERDIGEST:I4DkRCh21YG2Mk14iTe+hg==
, как вы можете увидеть, как предполагаемый клиент нонс очень сильно отличается от сервера генерируется нонса, на самом деле клиент нонс не похож на MD5 хэш вообще.
Пожалуйста, кто-то это делает раньше? есть ли что-то в HttpDigestCredentials? Я знаю, что дайджест едва используется.
Пожалуйста, я знаю о SSL, но у меня пока нет сертификата SSL, поэтому не говорите мне «Почему бы вам не использовать SSL». ;)
Update:
Не уверен, что если было правильно сделать, но, как я прочитал, прежде чем смола использует формат base64 для хэшей, поэтому я использовал Apache Commons-кодек-1,6 использовать метод encodeBase64String(), и теперь хэши выглядят одинаково, но они не совпадают.
Я попытался как passwordDigest.getPasswordDigest(a1+':'+nonce+':'+a2); passwordDigest.getPasswordDigest(a1+':'+nonce+':'+ncount+':'+cnonce+':'+qop+':'+a2);
и ни один из них не дает такой же хэш, как один из HttpDigestCredentials.