In this blog, 25.000 books will be uploaded, so far more than 1400 books are available. Books, will be added daily, please check this blog daily.
Friday, September 3, 2010
LDAP programming With Java
Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
PART I INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
CHAPTER 1 WHAT CAN YOU FIND IN A DIRECTORY? . . . . . . . . . . 3
What Is a Directory?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
What’s That Phone Number? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Directory Clients for an Online Phone Book . . . . . . . . . . . . . . . . 7
Is He Really Who He Says He Is?. . . . . . . . . . . . . . . . . . . . . . . . . 10
Working Together. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Computers, Printers, Toasters . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
CHAPTER 2 THE LINGUA FRANCA OF DIRECTORIES IS LDAP . . . . 19
A Brief History of Electronic Directories . . . . . . . . . . . . . . . . . . . 19
I Heard It through the Grapevine . . . . . . . . . . . . . . . . . . . 19
Directories for the Internet . . . . . . . . . . . . . . . . . . . . . . . . 20
Directories for a Single Network:
Proprietary Solutions. . . . . . . . . . . . . . . . . . . . . . . . . . . 20
X.500: The “Heavyweight” Directory Service . . . . . . . . . 21
From Humble Beginnings . . . . . . . . . . . . . . . . . . . . . . . . . 22
Future Directions for LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
The LDAP Information and Naming Models:
How Directories Are Organized . . . . . . . . . . . . . . . . . . . . . . . 26
The LDAP Information Model . . . . . . . . . . . . . . . . . . . . . 26
The LDAP Naming Model . . . . . . . . . . . . . . . . . . . . . . . . 30
LDAP Spoken Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Many Roads to Rome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Directory SDK for C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Directory SDK for Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Java Naming and Directory Interface . . . . . . . . . . . . . . . . 35
CHAPTER 3 MAY WE INTRODUCE—
DIRECTORY SDK FOR JAVA. . . . . . . . . . . . . . . . . . . . . . 37
What Directory SDK for Java Can Do for You . . . . . . . . . . . . . . 37
Freedom from Protocol Handling . . . . . . . . . . . . . . . . . . . 37
The Use of Standard Java Objects for Returning
and Processing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Utility Classes for Handling LDAP-Specific Entities. . . . . 38
Full Access to All LDAP Services. . . . . . . . . . . . . . . . . . . . 38
Flexible Authentication Models . . . . . . . . . . . . . . . . . . . . 39
Write Once, Run Anywhere . . . . . . . . . . . . . . . . . . . . . . . 39
Multilayered Functionality . . . . . . . . . . . . . . . . . . . . . . . . 39
A Platform for Directory-Enabled Applications . . . . . . . . 39
What Else Can the SDK Do for Me? . . . . . . . . . . . . . . . . . . . . . . 40
Dynamic Organizational Chart. . . . . . . . . . . . . . . . . . . . . 40
Directory-Linking Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Access Control for Existing or New Applications . . . . . . 43
Installation and Setup of the SDK . . . . . . . . . . . . . . . . . . . . . . . . 45
Staying Current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Installing the SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
PART II GETTING STARTED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
CHAPTER 4 SETTING UP YOUR OWN DIRECTORY . . . . . . . . . . . . . 51
Downloading and Installing Netscape Directory Server . . . . . . . 51
Before You Download and Install the Software . . . . . . . . 51
Downloading Netscape Directory Server . . . . . . . . . . . . . 52
Installing Netscape Directory Server . . . . . . . . . . . . . . . . . 52
Setting Up the Sample Database . . . . . . . . . . . . . . . . . . . . 55
Using the Command-Line Tools with Your New Directory . . . . 57
Finding Entries with LDAPSearch . . . . . . . . . . . . . . . . . . . 57
Adding Entries to the Directory . . . . . . . . . . . . . . . . . . . . 59
Understanding LDIF: How to Describe a
Directory Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Object Classes: Determining What Information
Makes Up an Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Choosing a Distinguished Name:
Where Do You Want to Add the Entry? . . . . . . . . . . . . 64
Examples of Defining and Adding Entries . . . . . . . . . . . . 64
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
CHAPTER 5 SEARCHING WITH THE SDK . . . . . . . . . . . . . . . . . . . . . 67
Our First Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Host Name. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Port. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Base DN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Search Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Our First Search Program . . . . . . . . . . . . . . . . . . . . . . . . . 74
Using Search Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Handling Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Attributes in Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
I Want Only One Record and I Have the DN . . . . . . . . . . . . . . . 85
Searching and Comparing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
More on Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Sorting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Authenticating for Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Improving Directory Search Performance . . . . . . . . . . . . . . . . . . 103
Use Indexed Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Specify an Object Class to Get Only Entries
of the Desired Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Retrieve Only Attributes You Need . . . . . . . . . . . . . . . . . 104
Keep the DN Handy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Use compare Where It Makes Sense . . . . . . . . . . . . . . . . . 105
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
CHAPTER 6 CREATING AND MAINTAINING INFORMATION . . . . . 107
Before We Can Update: Authentication Basics . . . . . . . . . . . . . . 107
Adding an Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Summary of Steps to Add a New Entry. . . . . . . . . . . . . . . 111
Inserting Records from a Data File . . . . . . . . . . . . . . . . . . 113
Adding an Organizational Unit . . . . . . . . . . . . . . . . . . . . . 116
Processing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Modifying an Existing Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Summary of Steps to Modify an Existing Entry . . . . . . . . 118
Adding an Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Modifying an Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Removing an Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Updating Multivalued Attributes . . . . . . . . . . . . . . . . . . . 120
Storing Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Storing Preferences and State. . . . . . . . . . . . . . . . . . . . . . . 135
Deleting an Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Renaming an Entry: Modifying the RDN . . . . . . . . . . . . . . . . . . 151
Managing Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Adding a User to a Group . . . . . . . . . . . . . . . . . . . . . . . . . 161
Removing a User from a Group . . . . . . . . . . . . . . . . . . . . 161
Using the LDAPIsMember Bean. . . . . . . . . . . . . . . . . . . . . . 162
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
CHAPTER 7 SECURING THE DATA. . . . . . . . . . . . . . . . . . . . . . . . . . . 165
No Standards for Access Control. . . . . . . . . . . . . . . . . . . . . . . . . 165
Setting Up an Access Control List . . . . . . . . . . . . . . . . . . . . . . . . 166
Viewing Access Control Lists through LDAP . . . . . . . . . . . . . . . 172
Modifying Access Control Lists through LDAP . . . . . . . . . . . . . 175
Authenticating to the Directory . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Using Password-Based Authentication. . . . . . . . . . . . . . . . . . . . . 177
Communicating over Secure Sockets Layer . . . . . . . . . . . . . . . . . 178
Using Certificate-Based Authentication . . . . . . . . . . . . . . . . . . . . 181
Using SASL Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Authenticating with SASL in LDAP . . . . . . . . . . . . . . . . . 183
Callbacks in SASL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
The SASL Framework Classes. . . . . . . . . . . . . . . . . . . . . . 186
Preparing to Use an Existing Mechanism . . . . . . . . . . . . . 189
Your Own SaslClient and ClientFactory . . . . . . . . . . 190
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
PART III GETTING DOWN AND DIRTY . . . . . . . . . . . . . . . . . . . . 197
CHAPTER 8 MORE POWER TO THE BROWSER:
AN APPLET THAT SPEAKS LDAP. . . . . . . . . . . . . . . . . . 199
What’s So Different about an Applet? . . . . . . . . . . . . . . . . . . . . . 199
Certificates and Signed Applets . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Writing LDAP Applets for Netscape Navigator . . . . . . . . . . . . . 204
Requesting Connection Privileges . . . . . . . . . . . . . . . . . . . 204
Packaging Your Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Generating a Test Certificate . . . . . . . . . . . . . . . . . . . . . . . 209
Signing Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Testing Your Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Using the Codebase as a Principal . . . . . . . . . . . . . . . . . . . 215
Writing LDAP Applets for Microsoft Internet
Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Requesting Connection Privileges . . . . . . . . . . . . . . . . . . . 216
Packaging Your Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Generating a Test Certificate . . . . . . . . . . . . . . . . . . . . . . . 218
Signing Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Creating a Web Page for the Applet . . . . . . . . . . . . . . . . . . . . . . . 221
Writing LDAP Applets for Java Plug-In Software . . . . . . . . . . . . 221
Packaging Your Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Generating a Key Pair and Self-signed Certificate. . . . . . . 222
Signing Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Setting Up the End User’s System . . . . . . . . . . . . . . . . . . . 225
A Directory Viewer Applet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
A Simple Example for Java Plug-In Software . . . . . . . . . . 229
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
CHAPTER 9 SCRIPTING LDAP: JAVASCRIPT AND JAVA . . . . . . . . . 243
Accessing Java Applets from JavaScript. . . . . . . . . . . . . . . . . . . . 243
Accessing Java Objects from JavaScript. . . . . . . . . . . . . . . . . . . . 250
JavaScript Gotchas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Handling Java Exceptions in JavaScript . . . . . . . . . . . . . . 255
Handling Arrays of Strings . . . . . . . . . . . . . . . . . . . . . . . . 262
Requesting Privileges and Signing Your
JavaScript Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Accessing the LDAP Classes from JScript
in Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
CHAPTER 10 DON’T REDO IT, REUSE IT: LDAP JAVABEANS . . . . . . 267
Invisible LDAP JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
LDAPBasePropertySupport. . . . . . . . . . . . . . . . . . . . . . . . 269
LDAPSimpleAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
LDAPGetEntries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Directory-Based Authentication in JavaScript . . . . . . . . . 287
Using PropertyChangeEvent Notifications . . . . . . . . . . . 289
Graphical LDAP JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
A Directory Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
A Directory Lister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
CHAPTER 11 MAKE YOUR APPLICATION
LOCATION-INDEPENDENT . . . . . . . . . . . . . . . . . . . . . . 341
The Teex Multicharacter-Set Text Editor. . . . . . . . . . . . . . . . . . . 342
The Teex JavaBean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
A Class for User Preferences . . . . . . . . . . . . . . . . . . . . . . . 344
Storing Preferences as Attributes in User Entries . . . . . . . 353
Saving Preferences as an Object in the Directory . . . . . . . 365
Using Directory Structure to Model Attributes. . . . . . . . . 369
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
CHAPTER 12 MODELING RELATIONSHIPS. . . . . . . . . . . . . . . . . . . . . 377
Mirroring an Organizational Structure . . . . . . . . . . . . . . . . . . . . 377
Attributes as Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Parsing the Reporting Relationships
in a Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
An Alternative Strategy for Management
Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
An Organizational Chart Tree Component . . . . . . . . . . . 396
A More Traditional Organizational Chart
Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Inspecting Properties of an Entry . . . . . . . . . . . . . . . . . . . 408
Connecting the Property Table and the Directory
Viewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
CHAPTER 13 SERVLETS AND LDAP. . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Overview of Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Uses of LDAP in Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Designing the LDAP Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Location of Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Our Phone Book Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Phone Book Lookups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Accessibility with a Simple Browser . . . . . . . . . . . . . . . . . 427
Utilizing the Corporate LDAP Directory . . . . . . . . . . . . . 428
Customizability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Search Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Intranet and Extranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
User Self-administration . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Connection Pooling and Data Caching. . . . . . . . . . . . . . . 429
Accessibility over SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Connection-Pooling Class . . . . . . . . . . . . . . . . . . . . . . . . . 429
Servlet Request-Response Model . . . . . . . . . . . . . . . . . . . 439
Setting Up and Using the Servlet . . . . . . . . . . . . . . . . . . . . . . . . . 484
Tips for Servlet Developers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
PART IV BEYOND THE BASICS. . . . . . . . . . . . . . . . . . . . . . . . . . . 487
CHAPTER 14 OPTIONS AND CONSTRAINTS . . . . . . . . . . . . . . . . . . . 489
How Do They Affect Me? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
A View into Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
TimeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Referrals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
BindProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
ReBindProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
HopLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Constraints for Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
ServerTimeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Dereference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
MaxResults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
BatchSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
MaxBackLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
CHAPTER 15 ODDS AND ENDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
LDAP URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
An IETF Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Using LDAP URLs in Java. . . . . . . . . . . . . . . . . . . . . . . . . 501
Not Your Average URL . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
A Rose by Any Other Name. . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
When What You Read Is Not What You Wrote . . . . . . . . . . . . . 505
Sometimes One Thread Is Not Enough . . . . . . . . . . . . . . . . . . . . 507
Don’t Step on My Settings . . . . . . . . . . . . . . . . . . . . . . . . . 510
A Cloned Connection Is a Safe Connection . . . . . . . . . . . 512
Performance, and How to Get It . . . . . . . . . . . . . . . . . . . . . . . . . 514
Breaking Up Is Hard to Do: Avoid
Unnecessary Connections . . . . . . . . . . . . . . . . . . . . . . . 514
Pool the Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Fewer But Better Searches . . . . . . . . . . . . . . . . . . . . . . . . . 516
To Cache or Not to Cache . . . . . . . . . . . . . . . . . . . . . . . . . 516
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
CHAPTER 16 ADVANCED TOPICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Information about Information: Managing the Schema . . . . . . . 519
Programmatic Access through the Schema Classes. . . . . . 519
A Pretty Printer for Schema Contents . . . . . . . . . . . . . . . . 524
Controls: An Essential Extension. . . . . . . . . . . . . . . . . . . . . . . . . 534
Too Much Data: A Virtual List View . . . . . . . . . . . . . . . . 535
Call Me When You’re Ready: Persistent Search . . . . . . . . 554
Password Expiration Notification. . . . . . . . . . . . . . . . . . . 557
Trust Me: The Proxied Authorization Control . . . . . . . . . 559
Your Very Own Controls: Using the BER Package. . . . . . 561
When the Data Lives Elsewhere: Managing Referrals. . . . . . . . . 572
Catching and Processing Referral Exceptions. . . . . . . . . . 572
Automatic Referrals: Anonymous or under
Client Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
The manageDsaIT Control . . . . . . . . . . . . . . . . . . . . . . . . . 575
LDAPBind for Complete Client Control. . . . . . . . . . . . . . . 575
And Now for Something Completely Different:
Extended Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Aiming for 24×7: Failover and Reconnecting . . . . . . . . . . . . . . . 579
Transparent Reconnection. . . . . . . . . . . . . . . . . . . . . . . . . 580
Controlling the Result Queue: The Connection Backlog . . . . . . 580
Down to the Wire: Using the Asynchronous Interface . . . . . . . . 581
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
PART V APPENDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
APPENDIX A MORE TO LEARN ABOUT LDAP . . . . . . . . . . . . . . . . . . 591
Going to the Source: Internet Standards . . . . . . . . . . . . . . . . . . . 591
Where to Get RFCs and Internet Drafts . . . . . . . . . . . . . . 591
LDAP RFCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
LDAP Internet Drafts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
X.500 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
Books about LDAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
LDAP Concepts and Deployment . . . . . . . . . . . . . . . . . . . 601
LDAP Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
X.500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
LDAP Information on the Internet. . . . . . . . . . . . . . . . . . . . . . . . 602
LDAP FAQs and Presentations . . . . . . . . . . . . . . . . . . . . . 602
LDAP Client SDKs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
LDAP Server Vendors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Add-On Products for LDAP Directories . . . . . . . . . . . . . . 603
Collections of LDAP Documents and Links . . . . . . . . . . . 604
X.500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Newsgroups Where LDAP Is Spoken. . . . . . . . . . . . . . . . . . . . . . 605
LDAP in Your Inbox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
LDAP Servers at Your Disposal . . . . . . . . . . . . . . . . . . . . . . . . . . 606
APPENDIX B CLASSES OF THE LDAP SDK . . . . . . . . . . . . . . . . . . . . . 607
The netscape.ldap Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
LDAPConnection and Connection Management. . . . . . . . 607
Basic LDAP Message and Data Encapsulation . . . . . . . . . 612
Handling Messages from the Server . . . . . . . . . . . . . . . . . 618
Authentication and Reauthentication . . . . . . . . . . . . . . . . 619
Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Client-Side Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Schema Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Miscellaneous Utility Classes . . . . . . . . . . . . . . . . . . . . . . 631
The netscape.ldap.util Package . . . . . . . . . . . . . . . . . . . . . . . 633
DNs and RDNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
LDIF Reader Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Connection Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
APPENDIX C LDAP UTILITY CLASSES ON THE CD-ROM. . . . . . . . . . 639
The table Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
The util Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
APPENDIX D COMMON LDAP SCHEMA ELEMENTS. . . . . . . . . . . . . 657
Object Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Abstract Object Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Structural Object Classes. . . . . . . . . . . . . . . . . . . . . . . . . . 658
Auxiliary Object Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
Attribute Syntaxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
Attribute Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
APPENDIX E LDAP ERROR CODES . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Download
Another Java Books
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment