Забыли пароль Active Directory Сценарий в .NET - PullRequest
0 голосов
/ 21 апреля 2011

Я работаю над созданием веб-интерфейса «Забыли пароль» для сброса паролей AD, используя LDAP. Ну, я могу разблокировать пользователя, но не сменить пароль.

Вот моя функция:

Private Function ChangeLocalUserPassword(ByVal User As String, ByVal Pass As String) As Boolean
    Dim pinger As New Net.NetworkInformation.Ping
    Dim usr As DirectoryEntry
    _de = GetDirectoryEntry()

    If _de Is Nothing Then
        'couldn't connect or find account
        MsgBox("_de is Nothing")
        Return False
    End If
    Try
        usr = _de.Children.Find("CN=" & User, "User")
    Catch ex As Exception
        MsgBox("User could not be found!")
        Return False
    End Try
    Try
        usr.Invoke("SetPassword", Pass)
        usr.CommitChanges()
        usr.Properties("LockOutTime").Value = 0
        usr.CommitChanges()
    Catch ex As Exception
        MsgBox("Error is " & ex.Message)
        Return False
    End Try

End Function

Вот моя функция GetDirectoryEntry:

 Private Function GetDirectoryEntry() As DirectoryEntry
        Dim dirEntry As DirectoryEntry = New DirectoryEntry()
        dirEntry.Path = "LDAP://<SERVER>/ou=<OU>,dc=<DOMAIN>"
        dirEntry.Username = "<DOMAIN>\Administrator"          
        dirEntry.Password = "<PASSWORD>"
        Return dirEntry
    End Function

Дополнительный вопрос. Кто-нибудь подскажет мне, как я могу обойти жесткое кодирование пользователя Admin на странице? Будет ли работать IUSR с несколькими правами администратора?

Любая помощь приветствуется!

Ответы [ 3 ]

0 голосов
/ 24 апреля 2011

Для сброса пароля PwdLastSet является ключевым атрибутом. Если значение PwdLastSet установлено равным нулю, пользователь должен изменить свой пароль при входе в систему ( см. Статью ).

На ваш вопрос:

Создать нового пользователя в Active-Directory.

В целевой организационной единице или непосредственно в контейнере домена вам просто нужно делегировать право сброса пароля новому пользователю. Таким образом, ваше приложение манипулирует только пользователем и паролем, которым разрешено сбрасывать пароль.

0 голосов
/ 24 апреля 2011

Создание группы в AD, Создание пользователя, делегирование опции изменения пароля группе, обычно это делается на уровне OU. Именно так большинство организаций делают это, имея функции справочной службы.
http://www.windowsecurity.com/articles/Implementing-Active-Directory-Delegation-Administration.html

0 голосов
/ 22 апреля 2011

Попробуйте, я прошел через реализацию AD служб Lightweight Directory.

Установка пароля для облегченных служб каталогов (ad lds) активного каталога в .net 2.0

В основном вы должны сначала создать запись, а затем установить пароль.

...