Monday, 22 August 2011

Get your AD information with .NET

.NET has a useful class called system.DirectoryServices to query LDAP such as Active Directory

Here is some example code to retrieve all the AD information for a user called FullName,

 

On a web site, your Active Directory Name can be found using

 

FullName = HttpContext.Current.Request.ServerVariables["AUTH_USER"];

 

(If you are not using AD then this will return a blank)

 

In this procedure we first write the results to a data table. we can then sort the results before appending them to a stringbuilder which is then return to the web page.

 

using System.DirectoryServices;

 

       public static String GetUserInfo(string Fullname)

        {

            DataTable UserInfo = new DataTable();

            UserInfo.Columns.Add("Name", typeof(string));

            UserInfo.Columns.Add("Info", typeof(string));

 

            System.Text.StringBuilder sb = new System.Text.StringBuilder();

 

            //extract the user name from DomainName

            string username = Fullname.Substring(Fullname.IndexOf("\\") + 1);

           

            //create a directorySearcher

            DirectorySearcher ds = new DirectorySearcher(new DirectoryEntry("LDAP://domain.net"));

           

            //filter the search to just the user name

            ds.Filter = "samaccountname=" + username;

            ds.PageSize = 1000;

            //use the findone function rather than the findall to return the user's data

            SearchResult sr = ds.FindOne();

 

            //loop through the search results properties inserting in to a data table

            foreach (string var in sr.Properties.PropertyNames)

            {

                UserInfo.Rows.Add(var, sr.Properties[var][0].ToString());

            }

            DataView dv = new DataView(UserInfo);

            dv.Sort = "Name";

 

            //write out the proprties in name order to the stringbuilder

            foreach (DataRowView drv in dv)

            {

                sb.AppendLine(string.Format("{0} : {1}", drv[0], drv[1]));

                sb.AppendLine("<BR>");

            }

            ds.Dispose();

            return sb.ToString();

        }

 


No comments:

Post a Comment

Featured post

OUT OF SUPPORT: SQL Server 2008 and SQL Server 2008 R2

Welcome to this post, on SQL Server 2008 and 2008 R2, both of these versions of SQL server will go out of  extended support with Microsoft t...