Назад | Перейти на главную страницу

разрешение на изменение пароля Windows в среде без AD

У нас есть компьютер под управлением Windows Server 2012 R2, который не является членом какого-либо домена, и веб-приложение, работающее на этом сервере. Пользователи приложения настраиваются как локальные пользователи Windows на сервере. Но пользователи никогда не заходят на сервер сами, приложение просто запрашивает у них имя пользователя и пароль, а затем проверяет сервер на правильность пароля.

Приложение запрашивает разрешение пользователям изменять свой пароль. Я пробовал использовать метод интерфейса ADSI ChangePassword(oldPassword, newPassword) сделать это. В качестве альтернативы метод ADSI SetPassword(newPassword). Но я получил сообщение об ошибке «Доступ запрещен».

Я думаю, согласно https://msdn.microsoft.com/en-us/library/ms180915(v=vs.90).aspx, Мне нужно добавить ACE (AccessControlEntries), содержащие следующие расширенные права в ACL (AccessControlList) пользователя, выполняющего службу, доступ к которой осуществляется через Интернет:

для методов с одинаковым именем. Они описаны Вот. Все инструменты, которые я нашел, которые позволили бы мне их увидеть («Пользователи и компьютеры Active Directory», «ADSI Edit» или «dsacls»), требуют подключения Active Directory, прежде чем что-либо делать.

И все образцы кода, которые я нашел, также требуют Active Directory для доступа к объекту пользователя или группы, для которого необходимо изменить ACL.

Мои эксперименты показывают, что я могу сделать учетную запись членом группы администраторов, которая, похоже, имеет разрешение SetPassword. Но, вероятно, этого намного больше, чем нужно, и я хотел бы дать учетной записи столько разрешений, сколько требуется. И я все равно не смогу таким образом проверить старый пароль.

Нет ли способа просто добавить ACE в учетную запись пользователя, если пользователь является локальным пользователем, а не пользователем AD?