Retrieving Active Directory Hierarchies through ASP.NET and C#

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fabiomoggi
    New Member
    • Jul 2008
    • 3

    Retrieving Active Directory Hierarchies through ASP.NET and C#

    Hello Guys,

    I am developing a web application to manage Active Directory resources, and one of my tasks is to map Organizational Units hierarchy into a SQL Server database. Let's suppose that I have the following OU hierarchy in my Active Direcoty:

    1. NewYork
    -----1.1 HR_Department
    ----------1.1.1 Computers
    ----------1.1.2 Users
    -----1.2 SALES_Departmen t
    ----------1.2.1 Computers
    ----------1.2.2 Users
    -----1.3 So on.....
    2. Chicago
    -----2.1 HR_Department
    ----------1.1.1 Computers
    ----------1.1.2 Users
    -----2.2 SALES_Departmen t
    ----------2.1.1 Computers
    ----------2.1.2 Users
    -----2.3 So on....

    I designed the following table into SQL Server in order to reach the AD hierarchy:

    OUId INT
    // Just an integer ID to identify the row.

    OUName VARCHAR(50)
    // Name of OU that comes from AD.

    ParentOUId INT
    // Id of the parent OU to create as many levels as necessary.

    The idea is to create a recursive table to store the hierarchy in a flexible way that there won't be any limitations in terms of creating as many sub OU as necessary. At this point goes my issue: I am having problems to create a C# function to return whether a OU already exists or not.

    Unfortunately Active Directory does not provide me a property that indicates who is parent OU. I can only identify the object structure by the distinguishedNa me property, which acording to my example returns something like:

    OU=Computers,OU =HR_Deparment, OU=NewYork, DC=....

    From this string, I convert it to an array:

    [0] Computers
    [1] HR_Department
    [2] NewYork

    From now on, I am stuck. I don't know how to create a recursive function to return and create the AD Hierarchy in my context.


    Could anyone help handle this?

    Thank you very much for you attention!
Working...