Создание CredentialCache для HttpWebRequest.Credentials, когда перенаправления неизвестны - PullRequest
1 голос
/ 07 февраля 2011

Я недавно задал вопрос относительно NetworkCredential и HttpWebRequest.Credentials, когда сервер возвращает перенаправления.Я определил, что создание CredentialCache из экземпляров NetworkCredential работает для моего сценария.Теперь у меня есть временный метод, который создает CredentialCache со всеми жестко закодированными доменными именами. Он работал, и это здорово.

        CredentialCache cache = new CredentialCache();
        cache.Add(new Uri("http://example.com"), "Negotiate", loginCredentials);
        cache.Add(new Uri("http://redirected.example.com"), "Negotiate", loginCredentials);
        request.Credentials = cache;

Теперь мне нужно сделать это более гибким.Вся идея перенаправлений заключается в распределении нагрузки на сервере.Клиент не будет точно знать, куда он будет перенаправлен до вызова HttpWebRequest.GetResponse ().Каков предпочтительный метод построения CredentialCache для включения каждого перенаправленного сервера по мере их появления?Кроме того, что является разумным в том, чтобы сделать это так сложно?Почему один экземпляр NetworkCredentials не может удовлетворить HttpWebRequest.Credentials для каждого перенаправления?Вносит ли он уязвимости безопасности для повторного использования учетных данных в перенаправлениях?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Я использовал код и получил ошибку 401 (веб-службы SharePoint 2010 OOB).Затем зарегистрировался на другом сайте и попробовал «NTLM» вместо «Negotiate» в строке ниже.Теперь он работает нормально.

Не работает:

cache.Add(new Uri(myProxy.Url), "Negotiate", new NetworkCredential("UserName", "Password", "Domain"))

Работает:

cache.Add(new Uri(myProxy.Url), "NTLM", new NetworkCredential("UserName", "Password", "Domain"))
0 голосов
/ 07 февраля 2011

Nate,

Я вижу, вы используете "переговоры", так почему бы вам не использовать

CredentialCache.DefaultNetworkCredentials or CredentialCache.DefaultCredentials

для всех перенаправлений?

Из MSDN:

Учетные данные, возвращаемые свойством DefaultNetworkCredentials, применимы только для проверки подлинности NTLM, согласования и Kerberos.

Учетные данные, возвращаемые DefaultNetworkCredentials, представляют учетные данные проверки подлинности для текущего контекста безопасностив котором приложение работает.Для клиентского приложения это обычно учетные данные Windows (имя пользователя, пароль и домен) пользователя, запустившего приложение.Для приложений ASP.NET сетевыми учетными данными по умолчанию являются учетные данные пользователя, вошедшего в систему или олицетворяющего пользователя.

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