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