SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
“If you have any interest in writing .NET programs using Active Directory or ADAM, this is the book you want to read.”
—Joe Richards, Microsoft MVP, directory services
Identity and Access Management are rapidly gaining importance as key areas of practice in the IT industry, and directory services provide the fundamental building blocks that enable them. For enterprise developers struggling to build directory-enabled .NET applications, The .NET Developer’s Guide to Directory Services Programming will come as a welcome aid.
Microsoft MVPs Joe Kaplan and Ryan Dunn have written a practical introduction to programming directory services, using both versions 1.1 and 2.0 of the .NET Framework. The extensive examples in the book are in C#; a companion Web site includes both C# and Visual Basic source code and examples.
Readers will
Experienced .NET developers—those building enterprise applications or simply interested in learning about directory services—will find that The .NET Developer’s Guide to Directory Services Programming unravels the complexities and helps them to avoid the common pitfalls that developers face.
A Brief History of Directory Services 3
Definition of LDAP 4
Definition of Active Directory 5
Definition of ADAM 7
LDAP Basics 11
.NET Directory Services Programming Landscape 27
Native Directory Services Programming Landscape 29
System.DirectoryServices Overview 32
System.DirectoryServices.ActiveDirectory Overview 40
System.DirectoryServices.Protocols Overview 43
Selecting the Right Technology 49
Property and Method Overview 54
Binding to the Directory 62
Directory CRUD Operations 98
LDAP Searching Overview 109
DirectorySearcher Overview 111
The Basics of Searching 115
Building LDAP Filters 118
Controlling the Content of Search Results 136
Executing the Query and Enumerating Results 139
Returning Many Results with Paged Searches 143
Sorting Search Results 146
Administrative Limits Governing Active Directory and ADAM 150
Understanding Searching Timeouts 152
Optimizing Search Performance 154
Searching the Global Catalog 158
Chasing Referrals 161
Virtual List View Searches 162
Searching for Deleted Objects 169
Directory Synchronization Queries 171
Using Attribute Scope Query 178
Extended DN Queries 181
Reading Security Descriptors with Security Masks 183
Asynchronous Searches 185
Basics of Reading Attribute Values 193
Collection Class Usage 195
Understanding the ADSI Property Cache 199
LDAP Data Types in .NET 200
ADSI Schema Mapping Mechanism 206
.NET Attribute Value Conversion 213
Standard Data Types 214
Binary Data Conversion 215
COM Interop Data Types 216
Syntactic versus Semantic Conversion 229
Dealing with Attributes with Many Values 230
Basics of Writing Attribute Values 234
Writing COM Interop Types 241
Schema Extension Best Practices 247
Choosing an Object Class 251
Choosing Attribute Syntaxes 253
Modeling One-to-Many and Many-to-Many Relationships 256
Search Flags and Indexing 261
Techniques for Extending the Schema 264
Discovering Schema Information at Runtime 266
Binding and Delegation 274
Directory Object Permissions in Active Directory and ADAM 300
Code Access Security 315
Working with the DirectoryContext Class 326
Locating Domain Controllers 332
Understanding the Active Directory RPC APIs 339
Useful Shortcuts for Developers 339
Finding Users 347
Creating Users 351
Managing User Account Features 353
Managing Passwords for Active Directory Users 376
Managing Passwords for ADAM Users 386
Determining User Group Membership in Active Directory and ADAM 389
Creating Groups in Active Directory and ADAM 397
Manipulating Group Membership 400
Expanding Group Membership 403
Primary Group Membership 409
Foreign Security Principals 413
Authentication Using SDS 418
Authentication Using SDS.P 424
Authentication Using SSPI 428
Discovering the Cause of Authentication Failures 431
The Standard Method 435
The Reflection Method 437
Handcrafted COM Interop Declarations 439
LDP 443
ADSI Edit 445
Active Directory Users and Computers 445
LDIFDE 446
ADFind/ADMod 447
BeaverTail LDAP Browser 447
Softerra LDAP Browser 448
Error 0x8007203A: “The server is not operational.” 449
Error 0x8007052E: “Login Failure: unknown user name or bad password.” 450
Error 0x80072020: “An operations error occurred.” 450
Error 0x80072030: “There is no such object on the server.” 451
Error 0x8007202F: “A constraint violation occurred.” 451
Error 0x80072035: “The server is unwilling to process the request.” 452
Error 0x80070005: “General access denied error.” 452
InvalidOperationException from DirectorySearcher 452
Getting Help 453