/ / Pobierz informacje o użytkowniku i sprawdź, czy członek grupy w aktywnym katalogu używa VB.NET - .net, vb.net, active-directory

Pobierz informacje o użytkowniku i sprawdź, czy członek grupy w aktywnym katalogu korzysta z VB.NET - .net, vb.net, active-directory

Używam następującego kodu, który działa, aby zalogować użytkownika do aplikacji wbudowanej w VB.NET przeciwko aktywnemu katalogowi.

Ten kod działa świetnie, ale muszę odzyskać imię, nazwisko, nazwę wyświetlaną użytkownika, a także sprawdzić, czy użytkownik jest częścią grupy.

Próbowałem już wielu form adResult.Property ("displayname"). ToString () i tym podobne, ale po prostu nie można go uruchomić poprawnie.

Ktoś ma pomysły, jak zrobić to, co chcę zrobić?

Oto kod, którego używam teraz i z góry dziękuję.

Public Function ValidateActiveDirectoryLogin(ByVal sDomain As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean

Dim bSuccess As Boolean = False
Dim adEntry As New System.DirectoryServices.DirectoryEntry("LDAP://" & sDomain, sUserName, sPassword)
Dim adSearcher As New System.DirectoryServices.DirectorySearcher(adEntry)
adSearcher.SearchScope = DirectoryServices.SearchScope.OneLevel
Try
Dim adResults As System.DirectoryServices.SearchResult = adSearcher.FindOne
bSuccess = Not (adResults Is Nothing)
Catch ex As Exception
bSuccess = False
MsgBox("Error")
End Try

Return bSuccess

End Function

Odpowiedzi:

4 dla odpowiedzi № 1

Spójrz na obszar nazw System.DirectoryServices.AccountManagemment. The userprincipal obiekt ma wszystko, czego potrzebujesz i więcej. Oto wyjaśnienie o tym, jak korzystać z tego interfejsu API.

EDYCJA: w rzeczywistości jest o wiele prostsze w użyciu. Spójrz na ten przykładowy kod:

Dim userName = Environment.UserName

" create a domain context
Dim DC = New PrincipalContext(ContextType.Domain)

" find a user in the domain
Dim user = UserPrincipal.FindByIdentity(DC, userName)

" get the user"s groups
Dim groups = user.GetGroups()

" get the user"s first and last name
Dim firstName = user.GivenName
Dim lastName = user.SurName

" get the distinguishednames for all groups of the user
Dim groupNames = From g in groups Select g.DistinguishedName
" etc...

0 dla odpowiedzi nr 2

..i szybko zrzuć zawartość nazw grup (z odpowiedzi br. Jeroenhena) do listy:

    ListBox1.DataSource = groupnames.ToList()