Получить информацию о пользователе и проверить, является ли член группы в активном каталоге, используя VB.NET - PullRequest
1 голос
/ 08 сентября 2010

Я использую следующий код, который работает, для входа пользователя в приложение, встроенное в VB.NET для активной директории.

Этот код прекрасно работает, но мне нужно получить имя пользователя,фамилия, отображаемое имя, а также проверьте, является ли пользователь частью группы.

Я пробовал много форм adResults.Property ("displayname"). ToString () и тому подобное, но просто не могузаставить его работать правильно.

У кого-нибудь есть идеи, как сделать то, что я хочу сделать?

Вот код, который я сейчас использую, и спасибо заранее.

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 

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

Посмотрите на пространство имен System.DirectoryServices.AccountManagemment. Объект userprincipal имеет все необходимое и даже больше. Вот объяснение о том, как использовать этот API.

РЕДАКТИРОВАТЬ: это действительно намного проще в использовании на самом деле. Посмотрите на этот пример кода:

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 голосов
/ 27 сентября 2013

.. и для быстрого вывода содержимого имен групп (из блестящего ответа Джероена) в список:

    ListBox1.DataSource = groupnames.ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...