В моем приложении ASP.NET мне нужно иметь возможность аутентификации / авторизации для локальных пользователей / групп Windows (т.е. не Active Directory) на другом компьютере, а также для изменения паролей указанного удаленного локального компьютера. Учетные записи Windows.
Да, я знаю, что Active Directory создан для такого рода вещей, но, к сожалению, вышестоящие инстанции решили, что это необходимо сделать таким образом (поэтому аутентификация против пользователей в базе данных также отсутствует).
Я пытался использовать DirectoryEntry и WinNT так:
DirectoryEntry user = new DirectoryEntry(String.Format("WinNT://{0}/{1},User",
serverName, username), username, password, AuthenticationTypes.Secure)
но это приводит к исключению при попытке войти в систему более чем одному пользователю:
Несколько подключений к серверу или общему ресурсу одним и тем же пользователем с использованием более чем одного имени пользователя не допускаются. Отключите все предыдущие подключения к серверу или общему ресурсу и повторите попытку.
Я пытался убедиться, что мои DirectoryEntries используются внутри блока using, поэтому они расположены правильно, но, похоже, это не решает проблему. Кроме того, даже если бы это сработало, возможно, что два пользователя могут одновременно выполнить эту строку кода и, следовательно, попытаться создать несколько соединений, так что в любом случае это будет хрупким.
Есть ли лучший способ аутентификации в локальных учетных записях Windows на удаленном компьютере, авторизации в их группах и изменения паролей?
Спасибо за вашу помощь заранее.