Как бы я прошел аутентификацию для локального пользователя Windows на другом компьютере в приложении ASP.NET? - PullRequest
2 голосов
/ 24 мая 2010

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

Спасибо за вашу помощь заранее.

1 Ответ

0 голосов
/ 16 июля 2010

По-моему, вы не можете сделать это из своего сценария ASP.Net. Поскольку с сервера вам необходимо знать, какие все клиентские машины будут получать доступ к вашей странице, и предоставить серверу достаточные права для доступа к клиенту для выполнения этой дополнительной аутентификации пользователя и смены пароля. Также это громоздко. Одним из решений является использование элемента управления activex и запись этой логики (проверка подлинности пользователя и смена пароля) в этом элементе управления activex и предоставление элементу управления activex достаточных прав для клиентов. Это немного некрасиво, но это единственно возможное решение без ADS.

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