В моем приложении 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 на удаленном компьютере, авторизации по их группам и изменению их паролей?
Заранее благодарны за Вашу помощь.