Click here to Skip to main content
12,623,027 members (30,066 online)
Click here to Skip to main content
Add your own
alternative version

Stats

333.5K views
56 bookmarked
Posted

Accessing LDAP User list using VB.NET

, 6 Oct 2004
Rate this:
Please Sign up or sign in to vote.
This article will explain how to access LDAP service using VB.NET.

Introduction

Reading list of all LDAP users

Compared to VB 6.0, .NET framework has given very easy access to the network solutions like LDAP. I have seen lots of people asking questions on LDAP access using .NET. In this article, I will try to explain how to retrieve list of all LDAP users.

Code:

 Public Function GetAllUsers(ByVal ldapServerName As String) As Hashtable 

 'To retrieve list of all  LDAP users 

 'This function returns HashTable
 _ldapServerName = ldapServerName

 Dim sServerName As String = "mail"

 Dim oRoot As DirectoryEntry = New DirectoryEntry("LDAP://" & ldapServerName & _
       "/ou=People,dc=mydomainname,dc=com")
 
 Dim oSearcher As DirectorySearcher = New DirectorySearcher(oRoot)
 Dim oResults As SearchResultCollection
 Dim oResult As SearchResult
 Dim RetArray As New Hashtable()

 Try

  oSearcher.PropertiesToLoad.Add("uid")
  oSearcher.PropertiesToLoad.Add("givenname")
  oSearcher.PropertiesToLoad.Add("cn")
  oResults = oSearcher.FindAll     

  For Each oResult In oResults

   If Not oResult.GetDirectoryEntry().Properties("cn").Value = "" Then
    RetArray.Add( oResult.GetDirectoryEntry().Properties("uid").Value, _
      oResult.GetDirectoryEntry().Properties("cn").Value)
   End If

  Next

 Catch e As Exception

  'MsgBox("Error is " & e.Message)
  Return RetArray

 End Try

 Return RetArray
  
 End Function

Details:

As a basic, when we are writing applications that are related with LDAP, we need to take reference to the System.DirectoryServices namespace. To add the reference, just right click on the project and select "Add References". This will present the interface to select the .NET components that can be referred in the project. In this list, select System.DirectoryServices.dll and click Add. Now, in the project, open the form and add the following line at the top:

Imports System.DirectoryServices

After doing this operation, System.DirectoryServices is accessible in the application.

LDAP Implementation:

Normally, all elements and objects of LDAP are stored in a tree structure. To access this tree structure, we need to have a root element using which we can iterate through all child elements.

Obtaining a Root Element of LDAP:

Dim oRoot As DirectoryEntry = New DirectoryEntry("LDAP://" & _
     ldapServerName & "/ou=People,dc=mydomainname,dc=com")

Using this line, we can obtain the root of the LDAP tree structure.

Now, next job is to find all the entries of users from the LDAP tree. For this search operation, .NET Framework has provided a class, i.e. DirectorySearcher.

Dim oSearcher As DirectorySearcher = New DirectorySearcher(oRoot)

This class expects a parameter of DirectoryEntry and returns data in SearchResultCollection.

To access the SearchResultCollection, we need to use SearchResult object. The search result will contain the fields that we have specified in the load properties. To specify which property is to be loaded, we need to pass the field name as a string to the PropertiesToLoad method of the searcher object.

For example:

oSearcher.PropertiesToLoad.Add("givenname")

Make sure that you specify correct field names.

Now, the FindAll method of the object searcher will return the SearchResults collection. This collection will contain SearchResult (as specified above) and will have directory entries with the loaded properties.

In this example I have put all the values in a HashTable with Unique ID (UID) as key and Common Name (cn) as value.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Chandrashekhar Kulkarni
Web Developer
India India
Web Development:
.Net 2.0, VB.net, ASP.net, Classic ASP, VBScript, Javascript, HTML, DHTML,

OpenSource:
Perl, PHP, Linux, Apache, IIS.

Desktop Developement:
VB.net, VB 6, COM/DCOM, Winsock, MAPI, CDO, Outlook Object Model, LDAP, C, C++, Foxpro 2.5, Clipper.

Database:
MS SQL - Server, MySQL, PostgreSQL

Other:
Enterprise Architect, Microsoft Project, Rational Rose, UML.

Has Nine+ years of experience with IT and now working in Project Manager's Role.

You may also be interested in...

Pro
Pro

Comments and Discussions

 
GeneralRe: LDAP Pin
Cyber Friend5-Jun-12 23:51
memberCyber Friend5-Jun-12 23:51 
QuestionHow to get userPassword? Pin
kiitenlpf18-Oct-06 22:28
memberkiitenlpf18-Oct-06 22:28 
AnswerRe: How to get userPassword? Pin
jhwurmbach18-Oct-06 22:30
memberjhwurmbach18-Oct-06 22:30 
GeneralRe: How to get userPassword? Pin
kiitenlpf18-Oct-06 22:36
memberkiitenlpf18-Oct-06 22:36 
GeneralRe: How to get userPassword? Pin
Cyber Friend5-Jun-12 23:48
memberCyber Friend5-Jun-12 23:48 
QuestionHow to get a list of available properties ? Pin
Matthieu.C8-Nov-05 6:24
memberMatthieu.C8-Nov-05 6:24 
AnswerRe: How to get a list of available properties ? Pin
Sweet Angel27-Sep-06 11:34
memberSweet Angel27-Sep-06 11:34 
Generalldap query string Pin
ny3ranger29-Jun-05 8:38
sussny3ranger29-Jun-05 8:38 
Generalgolbal searching for a string Pin
brendanfry31-Jan-05 19:57
memberbrendanfry31-Jan-05 19:57 
GeneralRe: golbal searching for a string Pin
Chandrashekhar Kulkarni13-Apr-05 21:48
memberChandrashekhar Kulkarni13-Apr-05 21:48 
GeneralLDAP & Groups Pin
ANORTON24-Jan-05 5:02
memberANORTON24-Jan-05 5:02 
GeneralRe: LDAP & Groups Pin
Anonymous24-Jan-05 19:11
sussAnonymous24-Jan-05 19:11 
GeneralVB6.0 TO LDAP Pin
sriramara19-Nov-04 8:17
susssriramara19-Nov-04 8:17 
GeneralRe: VB6.0 TO LDAP Pin
Chandrashekhar Kulkarni29-Nov-04 1:23
memberChandrashekhar Kulkarni29-Nov-04 1:23 
QuestionHow about "DirectorySearcher.Filter"? Pin
BlackTigerAP20-Oct-04 18:25
memberBlackTigerAP20-Oct-04 18:25 
AnswerRe: How about "DirectorySearcher.Filter"? Pin
Chandrashekhar Kulkarni25-Oct-04 0:06
memberChandrashekhar Kulkarni25-Oct-04 0:06 
General"Multi-value" properties Pin
BlackTigerAP20-Oct-04 18:21
memberBlackTigerAP20-Oct-04 18:21 
GeneralRetrieve >1000 AD Entries Pin
BlackTigerAP20-Oct-04 18:19
memberBlackTigerAP20-Oct-04 18:19 
GeneralRe: Retrieve >1000 AD Entries Pin
Chandrashekhar Kulkarni25-Oct-04 0:12
memberChandrashekhar Kulkarni25-Oct-04 0:12 
GeneralRe: Retrieve >1000 AD Entries Pin
Ali Butt25-Aug-06 5:43
memberAli Butt25-Aug-06 5:43 
GeneralRe: Retrieve >1000 AD Entries Pin
Noisy_Crow31-Aug-06 7:30
memberNoisy_Crow31-Aug-06 7:30 
GeneralRe: Retrieve >1000 AD Entries Pin
xyvyx19-Aug-09 5:24
memberxyvyx19-Aug-09 5:24 
GeneralHash table reference Pin
sburns18-Oct-04 12:06
membersburns18-Oct-04 12:06 
GeneralRe: Hash table reference Pin
Anonymous24-Oct-04 23:53
sussAnonymous24-Oct-04 23:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.161128.1 | Last Updated 6 Oct 2004
Article Copyright 2004 by Chandrashekhar Kulkarni
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid