Я получаю ошибки на код ниже:Visual Basic и Active Directory
Private Function AuthenticateUser() As Boolean
Dim username As String = txtbok_login_username.Text
Dim password As String = txtbox_login_password.Text
Dim domain As String = "domain.local"
Dim isAuthenticated As Boolean = ValidateActiveDirectoryLogin(domain, username, password, "[email protected]")
Return isAuthenticated
End Function
Public Function ValidateActiveDirectoryLogin(ByVal domainName As String, ByVal userName As String, ByVal userPassword As String, ByVal groupName As String) As Boolean
Dim isValidated As Boolean = False
Try
Dim ldapPath As String = "LDAP://domain.local"
Dim dirEntry As New DirectoryServices.DirectoryEntries(ldapPath, userName, password, authenticationtypes.secure)
Dim dirSearcher As New DirectoryServices.DirectorySearcher(dirEntry)
dirSearcher.Filter = "(userPrincipalName=" & userName & ")"
dirSearcher.PropertiesToLoad.Add("memberOf")
Dim result As DirectoryServices.SearchResult = dirSearcher.FindOne()
If Not result Is Nothing Then
If groupName.Length = 0 Then
isValidated = True
Else
Dim groupCount As Integer = result.Properties("Fiserv Processing - MIS").Count
Dim isInGroup As Boolean = False
For index As Integer = 0 To groupCount - 1
Dim groupDN As String = result.Properties("Fiserv Processing - MIS").Item(index)
Dim equalsIndex As Integer = groupDN.IndexOf("=")
Dim commaIndex As Integer = groupDN.IndexOf(",")
Dim group As String = groupDN.Substring((equalsIndex + 1), (commaIndex - equalsIndex) - 1).ToLower
If group.Equals(groupName.ToLower) Then
isInGroup = True
Exit For
End If
Next index
isValidated = isInGroup
End If
End If
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
Return isValidated
End Function
Коды ошибок заключаются в следующем:
Ошибка 2 разрешение перегрузки не удалась, поскольку не доступный «Новый» может вызывается с этими аргументами: 'Public Sub New (фильтр As String)': Значение типа 'System.DirectoryServices.DirectoryEntries' не может быть преобразовано в 'String'. 'Public Sub New (searchRoot As System.DirectoryServices.DirectoryEntry)': Значение типа 'System.DirectoryServices.DirectoryEntries' не может быть преобразовано в 'System.DirectoryServices.DirectoryEntry'.
и
Ошибка 1 Тип 'System.DirectoryServices.DirectoryEntries' не имеет конструкторов.
Моя цель - проверить подлинность AD, если пользователь является членом определенной группы AD.
Любая помощь была бы принята с благодарностью.
Это устраняет мои ошибки. Теперь форма входа в систему не запускается после нажатия OK. Возможно ли, что код сканирует активный каталог и занимает много времени для аутентификации? Или, скорее, мой код после действия после правильной кодировки? – Lee