Lightweight Directory Access Protocol LDAP is a fast growing technology for accessing common directory information.. Directories, such as an LDAP directory, on the other hand, use a simp
Trang 1Understanding LDAP
Design and Implementation
Steven Tuttle Ami Ehlenberger Ramakrishna Gorthi Jay Leiserson Richard Macbeth Nathan Owen Sunil Ranahandola Michael Storrs Chunhui Yang
LDAP concepts and architecture
Designing and maintaining
LDAP
Step-by-step approach
for directory
Front cover
Trang 3Understanding LDAP Design and Implementation
June 2004
International Technical Support Organization
Trang 4Second Edition (June 2004)
This edition applies to Version 5, Release 2 of IBM Tivoli Directory Server
Note: Before using this information and the product it supports, read the information in
“Notices” on page xv
Trang 5Notices xv
Trademarks xvi
Preface xvii
The team that wrote this redbook xvii
Become a published author xix
Comments welcome xx
Summary of changes xxi
June 2004, Second Edition xxi
Part 1 Directories and LDAP 1
Chapter 1 Introduction to LDAP 3
1.1 Directories 5
1.1.1 Directory versus database 5
1.1.2 LDAP: Protocol or directory 7
1.1.3 Directory clients and servers 8
1.1.4 Distributed directories 9
1.2 Advantages of using a directory 10
1.3 LDAP history and standards 12
1.3.1 OSI and the Internet 12
1.3.2 X.500 the Directory Server Standard 13
1.3.3 Lightweight Access to X.500 14
1.3.4 Beyond LDAPv3 15
1.4 Directory components 16
1.5 LDAP standards 20
1.6 IBM’s Directory-enabled offerings 21
1.7 Directory resources on the Web 23
Chapter 2 LDAP concepts and architecture 27
2.1 Overview of LDAP architecture 28
2.2 The informational model 32
2.2.1 LDIF 35
2.2.2 LDAP schema 37
2.3 The naming model 42
2.3.1 LDAP distinguished name syntax (DNs) 43
2.3.2 String form 46
2.3.3 URL form 47
Trang 62.4 Functional model 47
2.4.1 Query 48
2.4.2 Referrals and continuation references 49
2.4.3 Search filter syntax 50
2.4.4 Compare 51
2.4.5 Update operations 51
2.4.6 Authentication operations 52
2.4.7 Controls and extended operations 52
2.5 Security model 53
2.6 Directory security 53
2.6.1 No authentication 54
2.6.2 Basic authentication 54
2.6.3 SASL 55
2.6.4 SSL and TLS 55
Chapter 3 Planning your directory 57
3.1 Defining the directory content 60
3.1.1 Defining directory requirements 60
3.2 Data design 60
3.2.1 Sources for data 61
3.2.2 Characteristics of data elements 62
3.2.3 Related data 62
3.3 Organizing your directory 63
3.3.1 Schema design 63
3.3.2 Namespace design 64
3.3.3 Naming style 67
3.4 Securing directory entries 68
3.4.1 Purpose 68
3.4.2 Analysis of security requirements 68
3.4.3 Design overview 68
3.4.4 Authentication design 69
3.4.5 Authorization design 70
3.4.6 Non-directory security considerations 71
3.5 Designing your server and network infrastructure 72
3.5.1 Availability, scalability, and manageability requirements 72
3.5.2 Topology design 73
3.5.3 Replication design 75
3.5.4 Administration 79
Part 2 IBM Tivoli Directory Server overview and installation 81
Chapter 4 IBM Tivoli Directory Server overview 83
4.1 Definition of ITDS 84
4.2 ITDS 5.2 87
Trang 74.3 Resources on ITDS 92
4.4 Summary of ITDS-related chapters 92
Chapter 5 ITDS installation and basic configuration - Windows 95
5.1 Installable components 97
5.2 Installation and configuration checklist 98
5.3 System and software requirements 99
5.3.1 ITDS Client 99
5.3.2 ITDS Server (including client) 100
5.3.3 Web Administration Tool 101
5.4 Installing the server 102
5.4.1 Create a user ID for ITDS 102
5.4.2 Installing ITDS with the Installshield GUI 103
5.4.3 Configuring the Administrator DN and password 106
5.4.4 Configuring the database 108
5.4.5 Adding a suffix 115
5.4.6 Removing or reconfiguring a database 117
5.4.7 Enabling and disabling the change log 118
5.5 Starting ITDS 120
Chapter 6 ITDS installation and basic configuration - AIX 125
6.1 Installable components 127
6.2 Installation and configuration checklist 128
6.3 System and software requirements 129
6.3.1 ITDS Client 129
6.3.2 ITDS Server (including client) 130
6.3.3 Web Administration Tool 132
6.4 Installing the server 133
6.4.1 Create a user ID for ITDS 133
6.4.2 Installing ITDS with the Installshield GUI 134
6.4.3 Configuring the Administrator DN and password 137
6.4.4 Configuring the database 138
6.4.5 Adding a suffix 145
6.4.6 Removing or reconfiguring a database 147
6.4.7 Enabling and disabling the change log 148
6.5 Starting ITDS 150
6.6 Uninstalling ITDS 153
Chapter 7 ITDS installation and basic configuration on Intel Linux 155
7.1 Installable components 157
7.2 Installation and configuration checklist 158
7.3 System and software requirements 159
7.3.1 ITDS Client 159
7.3.2 ITDS Server (including client) 160
Trang 87.3.3 Web Administration Tool 161
7.4 Installing the server 162
7.4.1 Create a user ID for ITDS 162
7.4.2 Installing ITDS with the Installshield GUI 164
7.4.3 Configuring the Administrator DN and password 166
7.4.4 Configuring the database 167
7.4.5 Adding a suffix 173
7.4.6 Removing or reconfiguring a database 174
7.4.7 Enabling and disabling the change log 176
7.5 Starting ITDS 177
7.6 Quick installation of ITDS 5.2 on Intel (minimal GUI) 180
7.7 Uninstalling ITDS 183
7.8 Removing all vestiges of an ITDS 5.2 Install on Intel Linux 183
Chapter 8 IBM Tivoli Directory Server installation - IBM zSeries 185
8.1 Installing LDAP on z/OS 186
8.1.1 Using the ldapcnf utility 186
8.1.2 Running the MVS jobs 186
8.1.3 Loading the schema 187
8.1.4 Enabling Native Authentication 187
8.2 Migrating data to LDAP on z/OS 188
8.2.1 Migrating LDAP server contents to z/OS 188
8.2.2 Moving RACF users to the TDBM space 189
Part 3 In-depth configuration and tuning 191
Chapter 9 IBM Tivoli Directory Server Distributed Administration 193
9.1 Web Administration Tool graphical user interface 194
9.2 Starting the Web Administration Tool 195
9.3 Logging on to the console as the console administrator 196
9.4 Logging on to the console as the server administrator 197
9.5 Logging on as member of administrative group or as LDAP user 198
9.6 Logging off the console 198
9.7 Starting and stopping the server 198
9.7.1 Using Web Administration 199
9.7.2 Using the command line or Windows Services icon 200
9.8 Console layout 200
9.9 Configuration only mode 201
9.9.1 Minimum requirements for configuration-only mode 202
9.9.2 Starting LDAP in configuration-only mode 202
9.9.3 Verifying the server is in configuration-only mode 202
9.10 Setting up the console 203
9.10.1 Managing the console 203
9.10.2 Creating an administrative group 208
Trang 99.10.3 Enabling and disabling the administrative group 209
9.10.4 Adding members to the administrative group 210
9.10.5 Modifying an administrative group member 211
9.10.6 Removing a member from the administrative group 213
9.11 ibmslapd command parameters 214
9.12 Directory administration daemon 216
9.12.1 The ibmdiradm command 216
9.12.2 Starting the directory administration daemon 217
9.12.3 Stopping the directory administration daemon 218
9.12.4 Administration daemon error log 218
9.13 The ibmdirctl command 227
9.14 Manual installation of IBM WAS - Express 230
9.14.1 Manually installing the Web Administration Tool 230
9.14.2 Manually uninstalling the Web Administration Tool 231
9.14.3 Default ports used by IBM WAS - Express 232
9.15 Installing in WebSphere Version 5.0 or later 234
Chapter 10 Client tools 237
10.1 The ldapchangepwd command 239
10.1.1 Synopsis 239
10.1.2 Options 239
10.1.3 Examples 242
10.1.4 SSL, TLS notes 248
10.1.5 Diagnostics 249
10.2 The ldapdelete command 249
10.2.1 Synopsis 249
10.2.2 Description 249
10.2.3 Options 250
10.2.4 Examples 250
10.2.5 SSL, TLS notes 253
10.2.6 Diagnostics 253
10.3 The ldapexop command 253
10.3.1 Synopsis 253
10.3.2 Description 253
10.3.3 Options 254
10.4 The ldapmodify and ldapadd commands 265
10.4.1 Synopsis 266
10.4.2 Description 266
10.4.3 Options 266
10.4.4 Examples 267
10.4.5 SSL, TLS notes 269
10.4.6 Diagnostics 270
10.5 The ldapmodrdn command 270
Trang 1010.5.1 Synopsis 270
10.5.2 Description 270
10.5.3 Options 270
10.5.4 Examples 271
10.5.5 SSL, TLS notes 272
10.5.6 Diagnostics 272
10.6 The ldapsearch command 272
10.6.1 Synopsis 272
10.6.2 Description 272
10.6.3 Options 273
10.6.4 Examples 279
10.6.5 SSL, TLS notes 286
10.6.6 Diagnostics 286
10.7 Summary 286
Chapter 11 Schema management 287
11.1 What is the schema 288
11.1.1 Available schema files 290
11.1.2 Schema support 291
11.1.3 OID 291
11.1.4 Inheritance 292
11.2 Modifying the schema 292
11.2.1 IBMAttributetypes 292
11.2.2 Working with objectclasses 293
11.2.3 Working with attributes 294
11.2.4 Disallowed schema changes 296
11.3 Indexing 297
11.4 Migrating the schema 298
11.4.1 Exporting the schema 298
11.4.2 Importing the schema 299
11.5 Dynamic schema 299
Chapter 12 Group and role management 301
12.1 Groups 302
12.1.1 Static groups 302
12.1.2 Dynamic groups 306
12.1.3 Nested groups 310
12.1.4 Hybrid groups 311
12.1.5 Determining group membership 312
12.1.6 Group object classes 316
12.1.7 Group attribute types 316
12.2 Roles 317
12.3 Summary 318
Trang 11Chapter 13 Replication 319
13.1 General replication concepts 320
13.1.1 Terminology 320
13.1.2 How replication functions 322
13.2 Major replication topologies 324
13.2.1 Simple master-replica topology 324
13.2.2 Master-forwarder-replica topology (ITDS 5.2 and later) 324
13.2.3 GateWay Replication Topology (ITDS 5.2 and later) 325
13.2.4 Peer replication 326
13.3 Replication agreements 342
13.4 Configuring replication topologies 343
13.4.1 Simple master-replica topology 343
13.4.2 Using the command line 361
13.4.3 Promoting a replica to peer/master 364
13.4.4 Command line for a complex replication 372
13.5 Web administration tasks for managing replication 377
13.5.1 Managing topology 377
13.5.2 Modifying replication properties 380
13.5.3 Creating replication schedules 381
13.5.4 Managing queues 384
13.6 Repairing replication differences between replicas 385
13.6.1 The ldapdiff command tool 385
Chapter 14 Access control 395
14.1 Overview 396
14.2 ACL model 397
14.2.1 EntryOwner information 397
14.2.2 Access Control information 397
14.3 Access control attribute syntax 401
14.3.1 Subject 402
14.3.2 Pseudo DNs 402
14.3.3 Object filter 405
14.3.4 Rights 405
14.3.5 Propagation 409
14.3.6 Access evaluation 412
14.3.7 Working with ACLs 415
14.4 Summary 429
Chapter 15 Securing the directory 431
15.1 Directory security 432
15.2 Authentication 432
15.2.1 Anonymous authentication 433
15.2.2 Basic authentication 433
Trang 1215.2.3 Authentication using SASL 434
15.2.4 Kerberos 436
15.3 Password policy enforcement 437
15.3.1 Overview 438
15.4 Password encryption 451
15.5 SSL/TLS support 455
15.5.1 Overview of TLS 455
15.5.2 Overview of SSL 456
15.5.3 SSL utilities 458
15.5.4 Configuring SSL security 460
15.6 Protection against DoS attacks 468
15.6.1 Non-blocking sockets 468
15.6.2 Extended operation for killing connections 468
15.6.3 Emergency thread 469
15.6.4 Connection reaping 470
15.6.5 Allow anonymous bind 470
15.7 Access control 472
15.8 Summary 472
Chapter 16 Performance Tuning 475
16.1 ITDS application components 477
16.2 ITDS LDAP caches 477
16.2.1 LDAP caches 478
16.2.2 LDAP filter cache 479
16.2.3 Filter cache bypass limits 479
16.2.4 LDAP entry cache 480
16.2.5 Measuring filter and entry cache sizes 481
16.2.6 LDAP ACL Cache 482
16.2.7 Setting other LDAP cache configuration variables 482
16.2.8 LDAP Attribute Cache (only on 5.2 and later) 484
16.2.9 Configuring attribute caching 485
16.3 Transaction and Event Notification 487
16.4 Additional slapd and ibmslapd settings 488
16.4.1 Tune the IBM Directory Server configuration file 488
16.4.2 Suffixes 489
16.4.3 Recycle the IBM Directory Server 490
16.4.4 Verify suffix order 490
16.5 DB2 tuning 491
16.5.1 Warning when IBM Directory Server is running 492
16.5.2 DB2 buffer pool tuning 493
16.5.3 LDAPBP buffer pool size 494
16.5.4 IBMDEFAULTBP buffer pool size 494
16.5.5 Setting buffer pool sizes 495
Trang 1316.5.6 Warnings about buffer pool memory usage 495
16.5.7 Other DB2 configuration parameters 496
16.5.8 Warning about MINCOMMIT 496
16.5.9 More DB2 configuration settings 496
16.5.10 Configuration script 515
16.6 Directory size 516
16.7 Optimization and organization 516
16.7.1 Optimization 516
16.7.2 reorgchk and reorg 517
16.7.3 Indexes 521
16.7.4 Distributing the database across multiple physical disks 522
16.7.5 Create file systems and directories on the target disks 524
16.7.6 Backing up the existing database 525
16.7.7 Perform a redirected restore of the database 525
16.8 DB2 backup and restore 527
16.9 Concurrent updates on Symmetric Multi-Processor systems 529
16.10 AIX operating system tuning 529
16.10.1 Enabling large files 529
16.10.2 Tuning process memory size limits 530
16.10.3 AIX-specific process size limits 531
16.10.4 AIX data segments and LDAP process DB2 connections 532
16.10.5 Verifying process data segment usage 532
16.11 Adding memory after installation on Solaris systems 532
16.12 SLAPD_OCHANDLERS variable on Windows 533
16.13 IBM Directory Change and Audit Log 533
16.13.1 When to configure the LDAP change log 533
16.13.2 When to configure the LDAP audit log 534
16.14 Hardware tuning 535
16.14.1 Disk speed improvements 535
16.15 Monitoring performance 535
16.15.1 ldapsearch with "cn=monitor" 535
16.15.2 Monitor examples 541
16.16 Troubleshooting error files 543
Chapter 17 Monitoring IBM Tivoli Directory Server 547
17.1 Overview 548
17.2 Monitoring tools 549
17.2.1 Viewing server state 549
17.2.2 Viewing status of worker threads 551
17.2.3 Viewing connections information 553
17.2.4 Viewing other general information about the directory server 556
17.2.5 Analyzing changelog 566
17.2.6 Analyzing log files 567
Trang 1417.3 Operating system commands for monitoring ITDS 582
17.4 Summary 585
Part 4 Developing directory-enabled applications 587
Chapter 18 Debugging IBM Tivoli Directory Server related issues 589
18.1 Overview 590
18.2 Debugging problems 590
18.2.1 Debugging configuration problems 590
18.2.2 Debugging directory server related errors using log files 592
18.2.3 Using server debug modes 592
18.2.4 DB2 error log file 600
18.3 Summary 601
Chapter 19 Developing C-based applications 603
19.1 Overview 604
19.2 Typical API usage 605
19.3 API flow when searching a directory 606
19.3.1 ldap_init() 606
19.3.2 ldap_simple_bind_s() 607
19.3.3 ldap_search_s() 607
19.3.4 ldap_first_entry() 607
19.3.5 ldap_first_attribute() 608
19.3.6 ldap_get_values() 608
19.3.7 ldap_next_attribute() 608
19.3.8 ldap_get_values() 608
19.3.9 ldap_next_entry() 609
19.3.10 ldap_unbind_s() 609
19.4 Sample code to search a directory 609
19.5 API flow when updating a directory entry 612
19.5.1 ldap_init() 613
19.5.2 ldap_simple_bind_s() 613
19.5.3 ldap_modify_s() 614
19.5.4 ldap_unbind_s() 615
19.6 Sample code to update a directory entry 615
Chapter 20 Developing JNDI-based applications 619
20.1 The JNDI 621
20.2 Searching the directory 623
20.2.1 Creating the directory context 625
20.2.2 Performing the search 626
20.2.3 Processing the search results 627
20.3 Changing a directory entry 628
20.3.1 Creating the directory context 630
Trang 1520.3.2 Performing the modification 630
Part 5 Appendixes 633
Appendix A DSML Version 2 635
DSML Version 2 Introduction 636
DSML 636
DSML Version 1.0 636
DSML Version 2.0 636
Difference between DSML v1 and DSML v2 637
Difference between DSML v2 and LDAP 637
Typical DSML Transaction 638
DSML Version 2 - IBM implementation 638
ITDS DSML Version 2 support 638
IBM DSML Version 2 top-level structure 640
IBM DSML LDAP Operations 646
Bindings 655
DSML communication between ITDI and ITDS 657
ITDS DSML Service Deployment 657
Installation 658
Configuration 666
Execution 668
Troubleshooting 672
Java programming examples on DSML 674
JNDI introduction 674
Program examples 675
References to the DSML official specifications 679
Appendix B Directory Integration - IBM Tivoli Directory Integrator 681
Why Directory Integration is important 683
Directory Integration Services 684
User provisioning applications 685
Directory Integration technologies 686
Metadirectories and virtual directories 690
Virtual directories vs metadirectory technology 691
Overview of IBM Tivoli Directory Integrator 692
Configuration of ITDI assembly lines 698
Configuration of an ITDI Event Handler 700
ITDI solution example 703
ITDI solution design 705
HR System Extract 705
Active Directory 706
Domino 706
XYZ Company ITDS Directory Information Tree 707
Trang 16User and group containers 707
Application container 708
LDAP Schema 709
Solution components 710
Summary 714
Appendix C Moving RACF users to TBDM 715
Sample programs to move RACF users to TBDM 716
Appendix D Schema changes that are not allowed 721
Operational attributes 722
Restricted attributes 723
Root DSE attributes 723
Schema definition attributes 723
Configuration attributes 724
User Application attributes 726
Abbreviations and acronyms 727
Related publications 731
IBM Redbooks 731
Online resources 731
How to get IBM Redbooks 733
Help from IBM 733
Index 735
Trang 17This information was developed for products and services offered in the U.S.A
IBM may not offer the products, services, or features discussed in this document in other countries Consult your local IBM representative for information on the products and services currently available in your area Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead However, it is the user's
responsibility to evaluate and verify the operation of any non-IBM product, program, or service
IBM may have patents or pending patent applications covering subject matter described in this document The furnishing of this document does not give you any license to these patents You can send license inquiries, in writing, to:
IBM Director of Licensing, IBM Corporation, North Castle Drive Armonk, NY 10504-1785 U.S.A.
The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES
THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Some states do not allow disclaimer
of express or implied warranties in certain transactions, therefore, this statement may not apply to you.This information could include technical inaccuracies or typographical errors Changes are periodically made
to the information herein; these changes will be incorporated in new editions of the publication IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice
Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk
IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products
This information contains examples of data and reports used in daily business operations To illustrate them
as completely as possible, the examples include the names of individuals, companies, brands, and products All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrates programming techniques on various operating platforms You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written These examples have not been thoroughly tested under all conditions IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs You may copy, modify, and distribute these sample programs in any form without payment to IBM for the purposes of developing, using, marketing, or distributing application programs conforming to IBM's application
programming interfaces
Trang 18The following terms are trademarks of other companies:
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun
Microsystems, Inc in the United States, other countries, or both
UNIX is a registered trademark of The Open Group in the United States and other countries
Other company, product, and service names may be trademarks or service marks of others
Trang 19Lightweight Directory Access Protocol (LDAP) is a fast growing technology for accessing common directory information LDAP has been embraced and implemented in most network-oriented middleware As an open, vendor-neutral standard, LDAP provides an extendable architecture for centralized storage and management of information that needs to be available for today’s distributed systems and services
After a fast start, it can be assumed that LDAP has become the de facto access method for directory information, much the same as the Domain Name System (DNS) is used for IP address look-up on almost any system on an intranet and on the Internet LDAP is currently supported in most network operating systems, groupware and even shrink-wrapped network applications
This book was written for those readers who need to understand the basic principles and concepts of LDAP Some background knowledge about heterogeneous, distributed systems is assumed and highly beneficial when reading this book This book is not meant to be an LDAP implementation guide, nor does it contain product-related or vendor-specific information other than as used in examples
The team that wrote this redbook
This redbook was produced by a team of specialists from around the world working at the International Technical Support Organization, Austin Center
Steven Tuttle is a Project Leader for the International Technical Support
Organization (ITSO), Austin Center He has 13 years of experience in the IT industry He has worked at IBM® for 10 years, with five years of experience with IBM security products He holds a degree in Computer Science from Clarkson University in Potsdam, New York, with concentrations in Mathematics and Psychology His areas of expertise include the IBM Tivoli® Enterprise™ products and the IBM Tivoli Security products Before joining the ITSO, he worked for IBM Tivoli Services in the Security Practice as an enterprise security solution designer using IBM Tivoli software products
Ami Ehlenberger has been with IBM for the past five years Her career has
included working in OS/390® development, z/OS® Integration Test, and the zSeries® Custom Technology Center Her technical concentration is Internet security, designing solutions that focus on WebSphere®, LDAP, and Tivoli
Trang 20security products Ami has a BS in Computer Science from Indiana University of Pennsylvania and an MBA in e-Business from the University of Phoenix Ami currently manages the IBM Server and Technology Group's zSeries Services Team The team specializes in Web enablement and solution design,
concentrating on the zSeries platform
Ramakrishna Gorthi is a developer for the IBM Tivoli Directory Server, Pune
Center in India He has worked at IBM for two and a half years, with one year of Level 2 Customer Support for the various versions of the IBM Tivoli Directory Server He holds a degree in Computer Engineering from Pune Institute of Computer Technology, Pune (India) His areas of expertise include the IBM Tivoli Directory Server from the Tivoli Security Products Apart from the immense experience gained as a Customer Support Representative, he has also earned a good reputation in the different phases of the product life cycle for the IBM Tivoli Directory Server, like development and testing
Jay Leiserson is a Solution Architect for Tivoli Security products He has
twenty-five years of experience in systems analysis, solution design, and software development He has worked at IBM for 24 years and has an extensive and varied background that includes directory design and integration, identity management solution design, Internet security, and application and operating system development for distributed systems He holds a degree in Economics from Antioch College in Yellow Springs, Ohio
Richard Macbeth is an IBM Directory Services Architect for Tivoli Services,
Americas Security Practice He has been with IBM for 25 years in the computer/IT field with 12 years of experience in the LDAP Directory field He has current certifications with Novell as a Certified Directory Engineer, Certified Novell Instructor, Certified Novell Engineer, and Sun One Directory 5 Engineer
He has worked on a number of versions of SecureWay®/IBM Directory Server on most platforms He also has four years of experience with Tivoli Access Manager and one year of experience with IBM Directory Integrator He also held a CCNP Certification with Cisco and had over 10 years of experience as a Senior Network
IT Specialist
Nathan Owen is a Identity Management Architect within IBM Software Group
Nathan has worked in the Identity Management space for over eight years with a particular focus on directory service related technologies such as X.500/LDAP directories, Meta-directories, and Virtual Directories He took a three year pause from IBM in 1999 and co-founded virtual directory vendor Octet String Inc., before returning to IBM late in 2002 He holds Political Science degree from Central Michigan University in Mt Pleasant, Michigan His areas of expertise include IBM Tivoli Directory Server (ITDS), IBM Tivoli Directory Integrator (ITDI),
as well as the other the products in the Tivoli Identity Management portfolio
Trang 21Sunil Ranahandola is a Software Engineer for the IBM Global Services (IGSI),
India Center He started his career with IBM in March 2001 and has been working with IBM since then He has almost three years of experience in the IT industry He holds a degree in Computer Science from University College of Engineering, Burla, Orissa, India His areas of expertise include the IBM Tivoli Directory Services
Michael Storrs is an IT Specialist for the Tivoli Security Group He has seven
years of experience in the IT industry, and has worked with enterprise access and identity management products for the last five years He holds a degree in Electrical Engineering from the University of Virginia His areas of expertise include the Tivoli Security Products, IBM Tivoli Directory Integrator, directory servers, and application development
Chunhui Yang is a Metadata Architect and Directory Consultant in IBM Software
Group, RTP She has direct experience with the full project lifecycle of information systems for Microsoft®, Dow Jones, Reuters, and IBM, and is recognized as a chief contributor with National awards to many projects in areas
of system architecture design, development and deployment on Directory solutions and n-tier Web-based application solutions
Thanks to the following people for their contributions to this project:
Tony Bhe, Tamikia Barrow, Linda Robinson, Margaret TicknorInternational Technical Support Organization, Austin CenterJulie Czubik
International Technical Support Organization, Poughkeepsie CenterChris Ehrsam
IBM Directory Solutions ArchitectJohn McGarvey
IBM Directory Solutions Architect/Security Integration
Become a published author
Join us for a two- to six-week residency program! Help write an IBM Redbook dealing with specific products or solutions, while getting hands-on experience with leading-edge technologies You'll team with IBM technical professionals, Business Partners and/or customers
Your efforts will help increase product acceptance and customer satisfaction As
a bonus, you'll develop a network of contacts in IBM development labs, and increase your productivity and marketability
Trang 22Find out more about the residency program, browse the residency index, and apply online at:
ibm.com/redbooks/residencies.html
Comments welcome
Your comments are important to us!
We want our Redbooks™ to be as helpful as possible Send us your comments about this or other Redbooks in one of the following ways:
Use the online Contact us review redbook form found at:
ibm.com/redbooks
Send your comments in an Internet note to:
redbook@us.ibm.com
Mail your comments to:
IBM Corporation, International Technical Support OrganizationDept JN9B Building 003 Internal Zip 2834
11400 Burnet RoadAustin, Texas 78758-3493
Trang 23Summary of changes
This section describes the technical changes made in this edition of the book and
in previous editions This edition may also include minor corrections and editorial changes that are not identified
Summary of Changesfor SG24-4986-01for Understanding LDAP
as created or updated on July 18, 2006
June 2004, Second Edition
This revision reflects the addition, deletion, or modification of new and changed information described below
New information
IBM Tivoli Directory Integrator information
Information on zSeries and Intel® Linux
Changed information
Updated information to latest release of products
Trang 25Part 1 Directories and LDAP
In this part we introduce directories and LDAP Specifically, we provide an introduction to LDAP, cover LDAP concepts and architecture, and provide some information on how to plan for a directory deployment in your environment
Part 1
Trang 27Chapter 1. Introduction to LDAP
Today people and businesses rely on networked computer systems to support distributed applications These distributed applications might interact with computers on the same local area network, within a corporate intranet, within extranets linking up partners and suppliers, or anywhere on the worldwide Internet To improve functionality and ease-of-use, and to enable cost-effective administration of distributed applications, information about the services, resources, users, and other objects accessible from the applications needs to be organized in a clear and consistent manner Much of this information can be shared among many applications, but it must also be protected in order to prevent unauthorized modification or the disclosure of private information Information describing the various users, applications, files, printers, and other resources accessible from a network is often collected into a special database that is sometimes called a directory As the number of different networks and applications has grown, the number of specialized directories of information has also grown, resulting in islands of information that are difficult to share and manage If all of this information could be maintained and accessed in a consistent and controlled manner, it would provide a focal point for integrating a distributed environment into a consistent and seamless system
The Lightweight Directory Access Protocol (LDAP) is an open industry standard that has evolved to meet these needs LDAP defines a standard method for accessing and updating information in a directory LDAP has gained wide acceptance as the directory access method of the Internet and is therefore also
1
Trang 28becoming strategic within corporate intranets It is being supported by a growing number of software vendors and is being incorporated into a growing number of applications For example, the two most popular Web browsers, Netscape Navigator/Communicator and Microsoft Internet Explorer, as well as application middleware, such as the IBM WebSphere Application Server or the IBM HTTP server, support LDAP functionality as a base feature
This chapter introduces the fundamentals of directories and the most commonly used protocol to access directories, the LDAP protocol You will also learn about the various components that make up a directory
Part of the information covered in this chapter and further information on LDAP directory concepts and implementations can be found in the following
publications:
SG24-6193
Another book that contains good information about directory concepts and
architecture is e-Directories Enterprise Software, Solutions, and Services, ISBN
0-201-70039-5
Trang 291.1 Directories
A directory is a listing of information about objects arranged in some order that gives details about each object Common examples are a city telephone directory and a library card catalog For a telephone directory, the objects listed are people; the names are arranged alphabetically, and the details given about each person are address and telephone number Books in a library card catalog are ordered by author or by title, and information such as the ISBN number of the book and other publication information is given
In computer terms, a directory is a specialized database, also called a data repository, that stores typed and ordered information about objects A particular directory might list information about printers (the objects) consisting of typed information such as location (a formatted character string), speed in pages per minute (numeric), print streams supported (for example PostScript or ASCII), and
The terms white pages and yellow pages are sometimes used to describe how a directory is used If the name of an object (person, printer) is known, its
characteristics (phone number, pages per minute) can be retrieved This is similar to looking up a name in the white pages of a telephone directory If the name of a particular individual object is not known, the directory can be searched for a list of objects that meet a certain requirement This is like looking up a listing
of hairdressers in the yellow pages of a telephone directory However, directories stored on a computer are much more flexible than the yellow pages of a
telephone directory because they can usually be searched by specific criteria, not just by a predefined set of categories
1.1.1 Directory versus database
A directory is often described as a database, but it is a specialized database that has characteristics that set it apart from general-purpose relational databases One special characteristic of directories is that they are accessed (read or searched) much more often than they are updated (written) Hundreds of people might look up an individual's phone number, or thousands of print clients might look up the characteristics of a particular printer, but the phone number or printer characteristics rarely change
Trang 30Because directories must be able to support high volumes of read requests, they are typically optimized for read access Write access might be limited to system administrators or to the owner of each piece of information A general-purpose relational database, on the other hand, needs to support applications, such as airline reservations and banking applications, with relatively high-update volumes.
Because directories are meant to store relatively static information and are optimized for that purpose, they are not appropriate for storing information that changes rapidly For example, the number of jobs currently in a print queue probably should not be stored in the directory entry for a printer because that information would have to be updated frequently to be accurate Instead, the directory entry for the printer can contain the network address of a print server The print server can be queried to get the current queue length if desired The information in the directory (the print server address) is static, whereas the number of jobs in the print queue is dynamic
Another difference between directories and general-purpose relational databases is that most directory implementations still do not support transactions However, transactions are supported in LDAP and are limited to transactions within the LDAP directory, and do not include other transactions (for example, database operations) Transactions are all-or-nothing operations that must be completed in total or not at all For example, when transferring money from one bank account to another, the money must be debited from one account and credited to the other account in a single transaction If only half of this transaction completes or someone accesses the accounts while the money is in transit, the accounts will not balance General-purpose relational databases usually support such transactions, which complicates their implementation Because general-purpose relational databases must support arbitrary applications such as banking and inventory control, they allow arbitrary collections of data to be stored Directories may be limited in the type of data they allow to be stored (although the architecture does not impose such a limitation) For example, a directory specialized for customer contact information might be limited to storing only personal information such as names, addresses, and phone numbers If a directory is extensible, it can be configured to store a variety of types of information making it more useful to a variety of programs Another important difference between a directory and a general-purpose relational database is in the way information can be accessed Most databases support a standardized, very powerful access method called Structured Query Language (SQL) SQL allows complex update and query functions at the cost of program size and application complexity Directories, such as an LDAP directory,
on the other hand, use a simplified and optimized access protocol that can be used in slim and relatively simple applications
Trang 31Because directories are not intended to provide as many functions as general-purpose relational databases, they can be optimized to economically provide more applications with rapid access to directory data in large distributed environments If your intended use of the directory is to be read, mostly in a non-transactional environment, both the directory client and directory server can
be simplified and optimized
A request is typically performed by the directory client, and the process that looks
up information in the directory is called the directory server In general, servers provide a specific service to clients Sometimes a server might become the client
of other servers in order to gather the information necessary to process a request
A directory service is only one type of service that might be available in a client/server environment Other common examples of services are file services, mail services, print services, Web page services, and so on The client and server processes may or may not be on the same machine A server is capable
of serving many clients Some servers can process client requests in parallel Other servers queue incoming client requests for serial processing if they are currently busy processing another client's request
An API defines the programming interface a particular programming language uses to access a service The format and contents of the messages exchanged between client and server must adhere to an agreed-upon protocol
1.1.2 LDAP: Protocol or directory
The Lightweight Directory Access Protocol (LDAP) defines a message protocol used by directory clients and directory servers.The LDAP protocol uses different messages For example, a bindRequest may be sent from the client to the LDAP server at the beginning of a connection A searchRequest is used to search for a specific entry in the directory
There are also associated LDAP APIs for the C language and ways to access LDAP from within a Java™ application Additionally, within the Microsoft development environment, you can access LDAP directories through its Active Directory Service Interface (ADSI) In general with LDAP, the client is not dependent upon a particular implementation of the server, and the server can implement the directory however it chooses
LDAP is an open industry standard that defines a standard method for accessing and updating information in a directory LDAP has gained wide acceptance as the directory access method of the Internet and is therefore also becoming strategic within corporate intranets It is being supported by a growing number of
Trang 32software vendors and is being incorporated into a growing number of applications.
LDAP defines a communication protocol That is, it defines the transport and format of messages used by a client to access data in an X.500-like directory LDAP does not define the directory service itself When people talk about the LDAP directory, that is the information that is stored and can be retrieved by the LDAP protocol
All modern LDAP directory servers are based on LDAP Version 3 You can use a Version 2 client with a Version 3 server However, you cannot use a Version 3 client with a Version 2 server unless you bind as a Version 2 client and use only Version 2 APIs
All LDAP servers share many basic characteristics since they are based on the industry standard Request for Comments (RFCs) However, due to
implementation differences, they are not all completely compatible with each other when there is not a standard defined
1.1.3 Directory clients and servers
Directories are usually accessed using the client/server model of communication
An application that wants to read or write information in a directory does not access the directory directly Instead, it calls a function or application programming interface (API) that causes a message to be sent to another process This second process accesses the information in the directory on behalf
of the requesting application via TCP/IP The default TCP/IP ports are 636 for secure communications and 389 for unencrypted communications The results of the read or write action are then returned to the requesting application, as shown
in Figure 4-1 on page 84
The request is performed by the directory client, and the process that maintains and looks up information in the directory is called the directory server In general, servers provide a specific service to clients Sometimes, a server might become the client of other servers in order to gather the information necessary to process
a request
The client and server processes may or may not be on the same machine A server is capable of serving many clients Some servers can process client requests in parallel Other servers queue incoming client requests for serial processing if they are currently busy processing another client’s request
An API defines the programming interface that a particular programming language uses to access a service The format and contents of the messages exchanged between client and server must adhere to an agreed-upon protocol
Trang 33LDAP defines a message protocol used by directory clients and directory servers There are also associated LDAP APIs for C and Java languages, and ways to access the directory from a Java application using Java Naming and Directory Interface (JNDI) The client is not dependent on a particular implementation of the server, and the server can implement the directory however it chooses.
1.1.4 Distributed directories
The terms local, global, centralized, and distributed are often used to describe a directory These terms mean different things in different contexts In this section,
we explain how these terms apply to directories
In general, local means nearby, and global means that something is spread across the universe of interest The universe of interest might be a company, a country, or the Earth Local and global are two ends of a continuum That is, something may be more or less global or local than something else Centralized means that something is in one place, and distributed means that something is in more than one place As with local and global, something can be distributed to a greater or lesser extent
The information stored in a directory can be simultaneously local and global in scope For example, a directory that stores local information might consist of the names, e-mail addresses and so on of members of a department or workgroup
A directory that stores global information might store information for an entire company Here, the universe of interest is the company
The clients that access information in the directory can be local or remote Local clients may all be located in the same building or on the same LAN Remote clients might be distributed across the continent or planet
The directory itself can be centralized or distributed If a directory is centralized, there may be one directory server at one location or a directory server that hosts data from distributed systems If the directory is distributed, there are multiple servers, usually geographically dispersed, that provide access to the directory.When a directory is distributed, the information stored in the directory can be partitioned or replicated When information is partitioned, each directory server stores a unique and non-overlapping subset of the information That is, each directory entry is stored by one and only one server One of the techniques to partition the directory is to use LDAP referrals LDAP referrals enable users to refer LDAP requests to a different server When information is replicated, the same directory entry is stored by more than one server In a distributed directory, some information may be partitioned while some may be replicated
Trang 34The three dimensions of a directory (scope of information, location of clients, and distribution of servers) are independent of each other For example, clients scattered across the globe can access a directory containing only information about a single department, and that directory can be replicated at many directory servers Or, clients in a single location can access a directory containing
information about everybody in the world that is stored by a single directory server
The scope of information to be stored in a directory is often given as an application requirement The distribution of directory servers and the way in which data is partitioned or replicated often can be controlled to affect the performance and availability of the directory
1.2 Advantages of using a directory
An application-specific directory stores only the information needed by a particular application and is not accessible by other applications Because a full-function directory service is complex to build, application-specific directories are typically very limited They probably store only a specific type of information,
do not have general search capabilities, do not support replication and partitioning, and probably do not have a full set of administration tools An application-specific directory could be as simple as a set of editable text files, or it could be stored and accessed in an undocumented, proprietary manner
In such an environment, each application creates and manages its own application-specific directory, which quickly becomes an administrative nightmare The same e-mail address stored by the calendar application might also be stored by a mail application and by an application that notifies system operators of equipment problems Keeping multiple copies of information up-to-date and synchronized is difficult, especially when different user interfaces and even different system administrators are involved
What is needed is a common, application-independent directory If application developers could be assured of the existence of a directory service, then application-specific directories would not be necessary However, a common directory must address the problems mentioned above It must be based on an open standard that is supported by many vendors on many platforms It must be accessible through a standard API It must be extensible so that it can hold the types of data needed by arbitrary applications, and it must provide full
functionality without requiring excessive resources on smaller systems Since more users and applications will access and depend on the common directory, it must also be robust, secure, and scalable
Trang 35When such a directory infrastructure is in place, application developers can devote their time to developing applications instead of application-specific directories In the same way that developers rely on the communications
infrastructure of TCP/IP and remote procedure call (RPC) to free them from low-level communication issues, they will be able to rely on powerful, full-function directory services LDAP is the protocol to be used to access this common directory infrastructure Like HTTP (hypertext transfer protocol) and FTP (file transfer protocol), LDAP has become an indispensable part of the Internet's protocol suite
When applications access a standard common directory that is designed in a proper way, rather than using application-specific directories, redundant and costly administration can be eliminated, and security risks are more controllable For example, the telephone directory, mail, and Web application as shown in Figure 1-1 can all access the same directory to retrieve an e-mail address or other information stored in a single directory entry The advantage is that the data
is kept and maintained in one place Various applications can use individual attributes of an entry for different purposes permitting that the they have the correct authority New uses for directory information will be realized, and a synergy will develop as more applications take advantage of the common directory
Figure 1-1 Several applications using attributes of the same entry
WebSphere Application Server A
Directory
Objects O=IBM CN=John CN=Wendy CN=Wolfgang
sn (surname): Eckert telephoneNumber=2022 givenName (Firstname): Wolfgang uid (UserID): weckert
HTTP Web Server
Trang 36Storing data in a directory and sharing it amongst applications saves you time and money by keeping administration effort and system resources down Many IBM applications also utilize directories to centrally store and share information The number of applications that support LDAP directories is constantly
increasing For example, LDAP directory support, such as for authentication and configuration management, is provided in various IBM operating systems, IBM WebSphere Application Server, IBM WebSphere Portal Server, IBM Tivoli Access Manager, IBM Tivoli Directory Server, IBM HTTP server, IBM Lotus® Domino®, and so forth
1.3 LDAP history and standards
In the 1970s, the integration of communications and computing technologies led
to the development of new communication technologies Many of the proprietary systems that were developed were incompatible with other systems It became apparent that standards were needed to allow equipment and systems from different vendors to interoperate Two independent major standardizations efforts developed to define such standards
1.3.1 OSI and the Internet
One standards drive was lead by the CCITT (Comite Consultatif International Telephonique et Telegraphique, or International Consultative Committee on Telephony and Telegraphy), and the ISO (International Standards Organization) The CCITT has since become the ITU-T (International Telecommunications Union - Telecommunication Standardization Sector) This effort resulted in the OSI (Open Systems Interconnect) Reference Model (ISO 7498), which defined a seven-layer model of data communication with physical transport at the lower layer and application protocols at the upper layers
The other standards drive grew up around the Internet and developed from research sponsored by DARPA (the Defense Advanced Research Projects Agency) in the United States The Internet Architecture Board (IAB) and its subsidiary, the Internet Engineering Task Force (IETF), develop standards for the Internet in the form of documents called Request for Comments (RFCs), which after being approved, implemented, and used for a period of time, eventually become standards (STDs) Before a proposal becomes an RFC, it is called an Internet Draft
The two standards processes approach standardization from two different perspectives The OSI approach started from a clean slate and defined standards using a formal committee process without requiring implementations The Internet uses a less formal engineering approach, where anybody can
Trang 37propose and comment on RFCs, and implementations are required to verify feasibility
The OSI protocols developed slowly, and because running the full protocol stack,
is resource intensive, they have not been widely deployed, especially in the desktop and small computer market In the meantime, TCP/IP and the Internet were developing rapidly and being put into use Also, some network vendors developed proprietary network protocols and products
1.3.2 X.500 the Directory Server Standard
However, the OSI protocols did address issues important in large distributed systems that were developing in an ad hoc manner in the desktop and Internet marketplace One such important area was directory services The CCITT created the X.500 standard in 1988, which became ISO 9594, Data Communications Network Directory, Recommendations X.500-X.521 in 1990, though it is still commonly referred to as X.500
X.500 organizes directory entries in a hierarchal name space capable of supporting large amounts of information It also defines powerful search capabilities to make retrieving information easier Because of its functionality and scalability, X.500 is often used together with add-on modules for interoperation between incompatible directory services
X.500 specifies that communication between the directory client and the directory server uses the directory access protocol (DAP) However, as an application layer protocol, the DAP requires the entire OSI protocol stack to operate Supporting the OSI protocol stack requires more resources than are available in many small environments Therefore, an interface to an X.500 directory server using a less resource-intensive or lightweight protocol was desired
Note: An excellent online resource on X.500 is the book, Understanding
X.500 - The Directory While dated (1996), this book, which is now out of print (but available online) is considered one of the original “gospels” of the
directory world It describes and defines the X.500 directory model in great detail Much of the material is still very much relevant in today’s current family
of LDAP directory servers It can be found here:
http://www.isi.salford.ac.uk/staff/dwc/X500.htm
Trang 381.3.3 Lightweight Access to X.500
LDAP was developed as a lightweight alternative to DAP LDAP requires the lighter weight and more popular TCP/IP protocol stack rather than the OSI protocol stack LDAP also simplifies some X.500 operations and omits some esoteric features
Two precursors to LDAP appeared as RFCs issued by the IETF, Directory Assistance Service (RFC 1202) and DIXIE Protocol Specification (RFC 1249) These were both informational RFCs which were not proposed as standards The directory assistance service (DAS) defined a method by which a directory client could communicate to a proxy on a OSI-capable host which issued X.500 requests on the client’s behalf DIXIE is similar to DAS, but provides a more direct translation of the DAP
The first version of LDAP was defined in X.500 Lightweight Access Protocol (RFC 1487), which was replaced by Lightweight Directory Access Protocol (RFC 1777) LDAP further refines the ideas and protocols of DAS and DIXIE It is more implementation neutral and reduces the complexity of clients to encourage the deployment of directory-enabled applications Much of the work on DIXIE and LDAP was carried out at the University of Michigan, which provides reference implementations of LDAP and maintains LDAP-related Web pages and mailing lists
RFC 1777 defines the LDAP protocol itself RFC 1777, along with:
The String Representation of Standard Attribute Syntaxes (RFC 1778)
A String Representation of Distinguished Names (RFC 1779)
An LDAP URL Format (RFC 1959)
A String Representation of LDAP Search Filters (RFC 1960)Define the original LDAPv2 version of the language
LDAP Version 2 has reached the status of draft standard in the IETF standardization process, one step from being a standard All of today’s directory server implementations are based on the LDAPv3 specification
LDAP Version 3 is defined by Lightweight Directory Access Protocol (v3) (RFC 2251) Related RFCs that are new or updated for LDAP Version 3 are:
Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions (RFC 2252)
Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names (RFC 2253)
The String Representation of LDAP Search Filters (RFC 2254)
Trang 39The LDAP URL Format (RFC 2255)
A Summary of the X.500(96) User Schema for use with LDAPv3 (RFC 2256)
Authentication Methods for LDAP (RFC 2829)
LDAPv3: Extension for Transport Layer Security (RFC 2830)
Lightweight Directory Access Protocol (v3): Technical Specification (RFC 3377)
RFC 2251 is a proposed standard, one step below a draft standard LDAP V3 extended LDAP V2 in the following areas:
Referrals: A server that does not store the requested data can refer the client
to another server
Security: Extensible authentication using Simple Authentication and Security Layer (SASL) mechanism
Internationalization: UTF-8 support for international characters
Extensibility: New object types and operations can be dynamically defined and schema published in a standard manner
In this book, the term LDAP refers to LDAP Version 3 unless LDAP Version 2 is specifically stated Differences between LDAP Version 2 and LDAP Version 3 are noted when necessary
1.3.4 Beyond LDAPv3
Recently, the push for encapsulating LDAP operations within XML for use within Web Services has spawned a new language called the Directory Services Markup Language (DSML) The most recent of the specification is DSMLv2 DSML is an XML schema for representing directory information, it's a generic import / export format for directory information Directory information in DSML can be shared between DSML-aware applications without exposing the LDAP protocol
XML provides an effective way to present and transfer data; Directory services allow you to share and manage data, and are thus a necessary prerequisite for conducting online business; DSML is designed to make directory service more dynamic by employing XML DSML is an XML schema for working with
directories, it is defined using a Document Content Description (DCD) Thus, DSML allows XML programmers to access LDAP-enabled directories without having to write to the LDAP interface or use proprietary directory-access APIs, and provides one consistent way to work with multiple dissimilar directoriesMore information on DSML can be found in Appendix A, “DSML Version 2” on page 635
Trang 40Various directory integration technologies have emerged in recent years that utilize LDAP and directory concepts to centralize and/or sychronize data between disparate directories as well as other disparate non-directory data sources Two of the more prominent technologies in this directory integration space are Meta-Directories and Virtual Directories These technologies are covered in greater detail in Appendix B, “Directory Integration - IBM Tivoli Directory Integrator” on page 681.
1.4 Directory components
A directory contains a collection of objects organized in a tree structure The LDAP naming model defines how entries are identified and organized Entries are organized in a tree-like structure called the Directory Information Tree (DIT) Entries are arranged within the DIT based on their distinguished name (DN) A
DN is a unique name that unambiguously identifies a single entry DNs are made
up of a sequence of relative distinguished names (RDNs) Each RDN™ in a DN corresponds to a branch in the DIT leading from the root of the DIT to the directory entry A DN is composed of a sequence of RDNs separated by commas, such as cn=thomas,ou=itso,o=ibm
You can organize entries, for example, after organizations and within a single organization you can further split the tree into organizational units, and so forth You can define your DIT based on your organizational needs as shown in Figure 1-2 on page 17 If you have, for example, one company with different divisions, you may want to start with your company name under the root as the organization (o) and then branch into organizational units (ou) for the individual divisions In case you store data for multiple organizations within a country, you may want to start with a country (c) and then branch into organizations For more information on planning a DIT, refer to Chapter 3, “Planning your directory” on page 57