GET запрос с запросом и дайджестом http авторизации - PullRequest
0 голосов
/ 07 мая 2009

У меня есть java-сервис, который мне нужно использовать (я не могу его изменить) и веб-сервер, который использует дайджест-авторизацию HTTP. Я использую HttpWebRequest для связи с сервером (методом GET). NetworkCredentials, необходимые для аутентификации предоставляются. Но при вызове GetResponse () выдается ошибка 400 (неверный запрос).

Адрес: http://info.server.com/someFolder/servlet.do?cmd=get_info&param=value

Пример запроса (не полный, только релевантные вещи):

GET /someFolder/servlet.do?cmd=get_info&param=value HTTP / 1.1

Хост: info.server.com

Ответ: 401 Требуется авторизация

Второй запрос:

GET /someFolder/servlet.do?cmd=get_info&param=value HTTP / 1.1

Хост: info.server.com

Авторизация: Digest ... uri = "/ someFolder / servlet.do" ... (явно не полный заголовок)

Второй ответ: 400 Неправильный запрос

Я пробовал этот запрос с веб-браузерами (IE, Firefox), и он работает, но кажется, что браузер помещает весь URI запроса в URI-часть заголовка Authorization, в то время как HttpWebRequest форматирует заголовок, как указано выше. Кто-нибудь знает, как заставить HttpWebRequest поставить весь URI в заголовок авторизации? Или, может быть, есть другое решение этой проблемы?

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 24 июня 2010

У нас та же проблема, и мы отследили ее до URL-адреса в заголовке авторизации. Похоже, HttpWebRequest отправляет только имя хоста, а не полный URL. Опускается:

?cmd=get_info&param=value

из URL. И IE8, и Chrome используют полный URL, включая параметры.

Мы смогли исправить это с помощью пользовательской реализации авторизации дайджеста. См. этот ответ .

0 голосов
/ 07 мая 2009

В этой статье от 4GuysFromRolla описывается реализация базовой и дайджест-аутентификации для HttpWebRequest.

http://www.4guysfromrolla.com/articles/102605-1.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...