Почему Silverlight 4 ClientHttp WebRequest запрашивает у пользователя логин и пароль? - PullRequest
0 голосов
/ 26 апреля 2010

Одной из новых функций клиентского стека http в Silverlight 4 является возможность предоставления сетевых учетных данных. Когда я использую эту функцию, Windows отображает окно сообщения «Безопасность Windows», которое запрашивает у пользователя логин и пароль (текст в поле: «Сервер xx на xx требует имя пользователя и пароль. и пароль должен быть отправлен небезопасным способом (обычная аутентификация без безопасного соединения). ") Я устанавливаю логин и пароль, как показано ниже, поэтому я не уверен, почему это отображается. Мой код:

var request = WebRequestCreator.ClientHttp.Create(new Uri("http://myserver:8080/gui/?list=1"));
request.Credentials = new NetworkCredential("login", "password");
request.BeginGetResponse(new AsyncCallback(OnRequestComplete), request);

Если я введу имя пользователя и пароль в окно сообщения, запрос будет успешно выполнен. По ряду причин я бы предпочел попросить пользователя ввести логин и пароль, поэтому я бы хотел по возможности избегать окна сообщения.

Моя установка - Silverlight 4 final, VS 2010 final, Windows 7 x86. В приложении отсутствует браузер с повышенными разрешениями.

Ответы [ 2 ]

1 голос
/ 22 мая 2010

Если вы звоните на веб-сервер, это межсайтовый вызов, вам нужно будет указать политику клиентского доступа на веб-сервере для включения заголовка авторизации. Вам следует либо разместить файл XAP на http://myserver:8080, либо добавить файл clientaccesspolicy.xml на веб-сайт на http://myserver:8080.

У Тим Хойер есть дополнительная информация о том, как Silverlight 4 позволяет модифицировать заголовок авторизации .

0 голосов
/ 26 апреля 2010

Предупреждение о «запросе на отправку вашего имени пользователя и пароля небезопасным способом», скорее всего, означает, что вы не отправляете данные через ssl (https), который по стандартам веб-браузера является безопасным соединением.

Вы не можете пройти мимо этого, потому что это приглашение отображается или не отображается в зависимости от настроек безопасности пользователя в Интернете. Единственный способ исправить это - использовать ssl.

...