Приложение, которое я изменяю, имеет веб-службу, и один из веб-методов этого веб-метода используется для аутентификации пользователя по активному каталогу. Таким образом, текущий код, вызываемый веб-методом AuthenticateUser, выглядит примерно так:
string domainAndUsername = aDomain + @"\\" + username;
string ldsPath = buildLdsPath(searchBase);
DirectoryEntry entry = new DirectoryEntry(ldsPath, domainAndUsername,
password);
try
{
//Bind to the native AdsObject to force authentication.
object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(sAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
// more code to validate the result, etc...
}
Когда я начал смотреть на этот код, первое, что меня беспокоило, - это аргументы веб-метода, выглядящие так:
[WebMethod]
public ResultObj AddRole(string roleToAdd, string username, string password)
{
// code that calls above Authentication fragment...
}
Таким образом, текущая веб-служба ожидает строку пароля, предположительно отправленную в открытом виде по сети в виде XML, когда выполняется запрос на страницу service.asmx.
Кто-нибудь имел дело с этим типом проблемы раньше? Существуют ли альтернативные механизмы аутентификации Active Directory, которые я мог бы использовать, чтобы избежать необходимости вводить простой текстовый пароль? Лучший вариант, который я мог бы придумать самостоятельно, - это вызвать WebMethod с использованием зашифрованного пароля, а другой код расшифровать его. Тем не менее, я бы предпочел лучшее решение - например: есть ли способ выполнить поиск по DirectoryEntry, используя односторонний хэш вместо пароля?
Изменить:
Дополнительные сведения: До этого момента я не рассматривал SSL, так как это инструмент, который является внутренним для нашей компании, поэтому он кажется избыточным и, возможно, проблематичным (он будет работать на компания интранет, а внешне не видна). Единственная причина, по которой меня беспокоит безопасность отправки простых текстовых паролей, заключается в том, что в наши дни даже в корпоративных сетях компании растет количество (возможно, обнаружение паролей) вредоносных программ.