Можно ли использовать Digest-Authentication с XMLHTTPRequest?

У меня есть простой вопрос: можно ли использовать Digest-Authentication с XMLHTTPRequest?

Если ответ отрицательный, какова техническая причина? Или, если это возможно - как я могу это сделать?

Спасибо большое... у google пока нет хорошего ответа: -/

EDIT:

Спасибо за ответы. Изменение заголовка в соответствии с схемой аутентификации дайджеста после приема nonce представляется решением.

Но я действительно искал, что я могу изменить свой текущий вызов: xmlhttp.open( "GET", url, false, username, password); к ст. например, xmlhttp.open( "GET", url, false, имя пользователя, пароль, "DIGEST" );

Это тоже часть моего первоначального вопроса: почему open-метод не предлагает вариант сделать дайджест-запрос?

Возможно, есть js-lib, который можно порекомендовать, что позволяет мне это делать - как вы думаете, я действительно не хочу менять один и простой xmlhttp.open на несколько запросов и сначала получать nonce.

+7
23 авг. '11 в 10:23
источник поделиться
4 ответа

Вы можете сделать это без проблем. Просто следуйте частям спецификаций, которые вам нравятся;)
http://tools.ietf.org/html/rfc2617
и все, что вам не хватает, чтобы начать писать свои библиотека проверки подлинности
http://pajhome.org.uk/crypt/md5/
на стороне клиента.

предварительная замена имени пользователя и пароля
Привет, я хочу аутентифицировать ---- > сервер
Хорошо, вот клиент nonce/salt ---- >
вот сумма хэша md5 моей временной метки имени пользователя и соль ----- > сервер
Я просто добавил ваш пароль и имя пользователя так же, как и вы, и они одинаковы. ----- > client
Это основные принципы этого.

Я забыл, что вам нужно включить URI запрашиваемого ресурса в hashsum!!!!
Конечно, вы делаете это с каждым запросом, который вы делаете для ресурса на сервере, таким образом, какой-то один перехват хэша может просматривать только содержимое, которое вы запросили, и не мог сделать запрос для разного ресурса. Этот метод не защищает данные только от доступа к нему.

+8
23 авг. '11 в 10:41
источник

Взгляните на эту статью: http://marcin-michalski.pl/2012/11/01/javascript-digest-authentication-restful-webservice-spring-security-javascript-ajax/. В нем объясняется, как сделать клиент JavaScript для проверки дайджеста с помощью SpringSecurity на стороне сервера. Код доступен в github: https://github.com/Arrowgroup/JSDigestAuth

+6
02 нояб. '12 в 9:08
источник

Я закодировал полный рабочий процесс для этого, это совсем не сложно, как только вы используете внешнюю библиотеку для MD5 (я использую Crypto-js).

Самая большая проблема, которая может возникнуть в том, что на первом сервере 401 ответ любой из наиболее часто используемых браузеров откроет диалоговое окно для получения ваших учетных данных. Насколько я видел, нет простого способа обойти это: Как я могу подавить диалог проверки подлинности браузера?

Чтобы решить эту проблему, я изменил веб-сервер, который я закодировал из проекта С# codeplex. По первому запросу клиент передает заголовок "Предупреждение", в котором говорится: "Не поднимайте 401". Сервер создает вызов и отправляет его с помощью специального, не-401 HttpException (я использую 406 на данный момент, что является "неприемлемым" в HTTP). Клиент создает хэш и отправляет его обратно.

Я могу опубликовать некоторые фрагменты кода, если кому-то это интересно, это старый вопрос.

+3
17 дек. '12 в 13:25
источник

Лучший способ сделать это - использовать SSL. Я не думаю, что существует какое-либо другое безопасное решение (исправьте меня, если я ошибаюсь)

0
23 авг. '11 в 11:03
источник

Посмотрите другие вопросы по меткам или Задайте вопрос