blob: 61c552eb46d12193d3bf86f11149e6d3ae64bfc1 [file] [log] [blame]
Title: 1.1 - What Apache DS is
NavPrev: 1-how-to-begin.html
NavPrevText: 1 - How to begin
NavUp: 1-how-to-begin.html
NavUpText: 1 - How to begin
NavNext: 1.2-some-background.html
NavNextText: 1.2 - Some Background. Directories, directory services and LDAP
Notice: Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
.
http://www.apache.org/licenses/LICENSE-2.0
.
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
# 1.1 - What Apache Directory Server is
This section describes what Apache Directory Server (abbreviated ApacheDS) is, and where it comes from.
[TOC]
## System vision
ApacheDS 2.0 is an embeddable, extendable, standards compliant, modern LDAP server written entirely in Java, and available under the Apache Software License. Other network protocols like Kerberos and NTP are supported as well (and even more may be added), but basically (and especially for this introduction guide) ApacheDS is an LDAP server.
_Embeddable_ means that it is possible to configure, start and stop ApacheDS from other Java components, especially application servers, and the server runs within the same VM. The solution has already been successfully embedded in Apache Geronimo, JBoss, and others. The fact that the server is embeddable is quite interesting, nevertheless you also have the deployment option to run the server standalone, for instance as a Windows service. Perhaps you know this situation from other LDAP servers -- open source (like OpenLDAP) as well as commercial ones (like Sun Java System Directory Server). This guide is dedicated to people that are new to ApacheDS. The guide concentrates on installing, configuring and running ApacheDS in a standalone configuration.
_Extendable_ means that the modern architecture of the solution provides many extension points. Write your own partitions to store directory data, interceptors to add functionality, etc. by implementing certain interfaces and plugging them in using Spring.
_Standard compliant_ means that ApacheDS 2.0 adheres to all RFCs relevant to LDAPv3. Please note that version 1.0 of the server has been successfully certified by the Open Group in September 2006 ("LDAP certified"). Thus LDAP clients may rightly expect that ApacheDS behaves like they expect.
_Modern_ means that ApacheDS aims modernize the LDAP territory, as well as it favors standards compliance. New rich integration tier constructs like LDAP Stored Procedures and Triggers are being built on top of existing standards.
_Entirely written in Java_ means that the software compiles and runs on a huge number of hardware and software platforms. Native installers are available for Windows, MacOS and Solaris (both SPARC and intel platform), but in fact the set of possible targets is by far more extensive.
### Architectural overview
![50k ft architecture](images/50k-ft-architecture.png)
## Origin and Motives
Through his experiences with enterprise LDAP directories, Alex Karasulu, realized there is a great need for rich integration tier constructs like LDAP Stored Procedures, Triggers, and Views. In 2001 he set out to alter the OpenLDAP server to offer support for these useful facilities which are present in relational databases but missing in the LDAP world. Alex's attempts failed due to the complexity of the software which was brittle, and difficult to manage. As C code ported to several platforms, the OpenLDAP code base, had several #IFDEF conditional pre-compiler directives that made it difficult to change the code. At this point Alex thought about implementing a new LDAP server in pure Java. Thanks to NIO this was finally possible using the 1.4 JDK.
In October 2002 Alex Karasulu founded and registered the [LDAPd](http://sourceforge.net/projects/ldapd) project at SourceForge.net. LDAPd was a a pure Java embeddable LDAP v3 protocol daemon built on the Avalon framework. Alex donated the code to the Apache Software Foundation and the code entered the [Apache Incubator](http://incubator.apache.org/) in October 2003. One year later in October of 2004, the Apache Directory Top Level Project (TLP) was formed after a successful incubation with the now called Apache Directory Server as its flagship product. After 4 years of development, in October 2006, Apache Directory Server 1.0 was released as an Open Group certified LDAPv3 protocol server. The certification has been renewed in September 2007.
Having a standards compliant and modern LDAP server, Apache Directory Team is now working on Identity and Access Management solutions leveraging the directory technology.
## Resources
* [Proposal for an Apache Directory Project](../../original-project-proposal.html) the original proposal for incubation, September 2003.
* [Architecting the Modern LDAP Renaissance: The Apache Directory Vision](../../vision.html), Paper for 1st International Conference on LDAP, September 2007.