Нет Environ («пароль») для привязки пользователей Active Directory? - PullRequest
1 голос
/ 05 марта 2010

Я хочу повторно использовать проверку подлинности Windows для привязки к пользователю Active Directory и проверки членства в группах.

Я могу получить имя пользователя Windows с помощью Environ("username"), но как мне получить пароль? Я не хочу требовать, чтобы пользователь повторно вводил свой пароль, но Environ("password").

нет

Как мне заставить этот код работать?

Спасибо!

Private Sub ADsAuthenticate()

    Dim objConnection As New ADODB.Connection
    Dim objRecordset As ADODB.Recordset
    Dim objADsUser As IADsUser
    Dim objADsGroup As IADsGroup
    Dim strUsername As String
    Dim strPassword As String

    strUsername = Environ("username")
    strPassword = Environ("password")

    With objConnection
        .Provider = "ADsDSOObject"
        .Properties("User ID") = strUsername
        .Properties("Password") = strPassword
        .Properties("Encrypt Password") = True
        .Open "ADs Provider"
        Set objRecordset = .Execute("<LDAP://<server>/dc=<domain>,dc=com>;" _
        & "(sAMAccountName=" & strUsername & ");ADsPath;Subtree")
    End With

    With objRecordset
        If Not .EOF Then
            Set objADsUser = GetObject("LDAP:").OpenDSObject(.Fields("ADsPath").Value, strUsername, strPassword, ADS_SECURE_AUTHENTICATION)
            Debug.Print objADsUser.ADsPath
            For Each objADsGroup In objADsUser.Groups
                Debug.Print objADsGroup.Name
            Next
        End If
    End With

    objConnection.Close

End Sub

1 Ответ

2 голосов
/ 05 марта 2010

Что заставляет вас быть уверенным, что пароль вообще где-нибудь читается?

Принятый способ хранения паролей - хранить только однонаправленный хеш-пароль (обычно с использованием алгоритма хеширования BCrypt плюс соль / одноразовый номер), и когда кто-то входит в систему, использует ту же технику хеширования для попытки ввода пароля, чтобы увидеть если это соответствует вашему сохраненному значению. Вместо того, чтобы хранить что-то читаемое, например password1 (предупреждение: пример неверного пароля!), Вы в итоге сохраняете что-то более похожее на 23e598ac098da42==, что гораздо менее полезно для взломщиков.

Именно поэтому, если вы потеряете пароль, большинство систем требуют его сброса, а не восстановления старого для вас & mdash; у них даже нет настоящей копии старой, чтобы дать вам.

...