LDAP is not a directory. It is a protocol (lightweight directory access protocol) that can be used to search for, create, modify and delete entries in a directory services product (e.g. ApacheDS, Active Directory, Oracle Internet Directory, Oracle Unified Directory, OpenLDAP, Novell eDirectory and etc).  Just like HTTP is not a web server, but a protocol used to access data on a web server.

All directories have a schema that defines the type of entries (e.g. container, user, group and etc) that the directory can contain and the items (attributes) that each entry can have (e.g. cn, sn, givenname, mail & etc).

You do not want to "port" the AD schema or any other directories schema to another directory.  If you want to stand up any directory product, you must learn it so you can have it contain the types of entries and attribute data for your needs.  An additional requirement is to understand the security components to protect those entries and attributes.  Some vendors, like Microsoft design their directory product so any connected user can see all entries and attributes in the directory, which might be more data that should be exposed. While other vendor designed their directory product where you (the admin) have to all assign access controls, because nothing is exposed by default.

It would be best to use the ApacheDS admin tool and admin guide to build a similar ou= and dc= container structure in ApacheDS that loosely matches your AD environment.  Then using the ApacheDS admin tool and admin guide, create a simple user and group.  At which time you can then use any numerous LDAP browser or command line tools (I prefer the OpenLDAP command line tools) to search against your ApacheDS directory and list out your simple user and group entry (into a .ldif file format).  Those same tools can also be used to pull data from AD.

There are plenty of sample java code snip-its on the Internet to LDAP auth against a directory service, that you would not have to "develop one".

Some directory vendors do have attribute uniqueness features where the "naming attribute" of a entry's distinguished name can be made "globally unique" like Microsoft did with the sAMAccountName.

A user (David Allen Smith) might as an example be give a login account named smithDA and be part of the engineering department. The directory container structure might look like:

dc=com
  dc=acme
     ou=engineering

...thus making his distinguished name: cn=smithDA,ou=engineering,dc=acme,dc=com

In this distinguished name, the "naming attribute" is the cn attribute.  In some directory products, an attribute uniqueness constant can be applied to the cn attribute so that David's login account is the only one named smithDA.


On 8/16/18 10:45 AM, Lothar Haeger wrote:
Milan Tomic wrote:

Now I would like to create as close as possible structure in my local
installation of ApacheDS as it is in real ActiveDirectory.
I'd rather try to install a Windows Server in VMware and create "real" AD
Domain.

AD is very much doing stuff just like AD and not like most other LDAP
directories, so if you want our app to work properly against all LDAP flavours
make sure to test and develop against all (main) flavours. Even if you get the
schame ported over, the backend server behaviour will not be the same. E.g.
most LDAP directories use loginDisabled to lock accounts, AD uses a single
binary attribute storing lock status together with a couple of different status
bits and not all of them can be flipped though LDAP at all. Another one is the
sAMAccountName, which AD enforces to be globally unique, but any "standard"
LDAP won't do that and you could create JDOE accounts in several different
containers.


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to