.NET Programming with System.DirectoryServices.Protocols (SDS.P)

In line with Ethan Wilansky’s previous white paper on System.DirectoryServices.ActiveDirectory (SDS.AD), I am pleased to announce his second white paper available on MSDN that highlights the .NET 2.0 System.DirectoryServices.Protocols (SDS.P) namespace. Also, as mentioned in my previous SDS.AD blog post, with the advent of SDS.AD and SDS.P in .NET 2.0, directory services programming for the managed code programmer has come of age. These rich programming APIs bring to the .NET platform the ability to manage a directory that previously was only available through Active Directory Services Interface (ADSI) scripting, C++ or the LDAP API. This white paper exposes some of the richness of the SDS.P programming model and its capabilities.

Staying true to the Directory Services namespaces design principles, SDS.P introduces a low barrier to entry and self documenting object model as well. SDS.P programmers will again see that they can learn the API quickly. The design goals for SDS.P were to target high performance, cover 100% of the scenarios and be easy to use. The object model is connection based with a request and response object. SDS.P is for server-side directory developers who seek the maximum control and power over the directory. SDS.P supports advanced directory operations like fast concurrent bind, certificate based authentication, transport layer security and much more. So don’t hesitate – read this exceptional paper and try out the sample code download.

Following are the scenarios exposed in the sample code:  Enjoy!

  • Common management tasks
    CreateUsers server_or_domain_name targetOu numUsers
    AddObject server_or_domain_name dn dirClassType
    AddAttribute server_or_domain_name dn attributeName attributeValue
    AddAttribute2 server_or_domain_name dn attributeName attributeValue
    AddAttributeUri server_or_domain_name dn attributeName attributeUriValue
    AddMVAttribStrings server_or_domain_name dn attribName "attribVal1,...attribValN"
    DeleteAttribute server_or_domain_name dn attributeName
    EnableAccount server_or_domain_name dn
    DeleteObject server_or_domain_name dn
    MoveRenameObject server_or_domain_name originalDn newParentDn objectName
  • Search operations
    SimpleSearch server_or_domain_name startingDn
    AttributeSearch server_or_domain_name startingDn "attribName1,...attribNameN"
    TokenGroupsSearch server_or_domain_name DnofUserAccount
    PagedSearch server_or_domain_name startingDn numbericPageSize
    AsyncSearch server_or_domain_name startingDn
    Asq server_or_domain_name groupDn
    Vlv server_or_domain_name startingDn maxNumberOfEntries nameToSearch
  • Advanced authentication operations
    Sslbind fullyQualifiedHostName:sslPort userName password
    FastConBind server_or_domain_name user1 pword1 user2 pword2 domainName
    Tls fullyQualifiedHostName_or_domainName userName password domainName
    cert fullyQualifiedHostName:sslPort clientCert certPassword