Вопрос

Если я передам учетные данные текущих пользователей веб-сервису с помощью system.net.credentialcache.defaultcredentials, каким образом будет передана информация?Я не думаю, что это будет открытый текст, поэтому учетные данные придется шифровать, но как они?

Это было полезно?

Решение

Это зависит от того, что запрашивает сервер в ответе HEAD.

Например, если я выполняю запрос HEAD к вашему веб-сервису и один из HTTP-заголовков в его ответе — «WWW-Authenticate:NTLM", то учетные данные, хранящиеся в DefaultCredentials, будут зашифрованы с использованием NTLM, а затем отправлены с полным GET/POST/PUT/Whatever.Чтобы это произошло, вам необходимо убедиться, что ваш веб-сервер настроен на запрос аутентификации NTLM.В IIS это случай выбора «встроенной проверки подлинности Windows».Я не уверен насчет TomCat, но эта почта выглядит уместно.

Однако если ваш веб-сервер отвечает «WWW-Authenticate:Basic» для конкретного ресурса (что предполагает отправку кредитов в виде открытого текста в закодированном виде (ПРИМЕЧАНИЕ: нет зашифровано) как base64), вы получите ArgumentException, поскольку передача учетных данных вашей учетной записи через базовую аутентификацию считается исключением безопасности.

Веб-серверы также можно настроить для приема нескольких методов аутентификации, но вы всегда должны быть готовы принять самый слабый из них, поэтому предложение базовой аутентификации в качестве «запасного варианта» означает, что некоторые из ваших пользователей вполне могут отправлять свои учетные данные в ясный текст.

Браузер обычно выбирает самый надежный из доступных ему методов, и я подозреваю (но не знаю наверняка), что библиотеки .net будут вести себя таким же образом.

РЕДАКТИРОВАТЬ

Пока ваш веб-сервер только запрашивает NTLM для вашего веб-сервиса, вы можете быть уверены, что ни один разумный клиент не отправит учетные данные в открытом виде.Используя сетевые классы в .net framework, вы можете быть уверены, что если вы используете DefaultCredentials и не вводите базовый заголовок аутентификации вручную, ваши учетные данные будут отправлены в зашифрованном виде с использованием NTLM.

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

Учетные данные, которые будет отправлять DefaultCredentials, зависят от того, какой тип приложения запросил DefaultCredentials.Если это клиентское приложение, работающее под учетной записью пользователя, учетные данные будут принадлежать этому пользователю.Если это приложение ASP.NET, которое взаимодействует с вашей веб-службой, оно будет использовать учетные данные учетной записи, под которой работает пул приложений. По умолчанию это NETWORK_SERVICE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top