[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: LDAP and Active Directory



This is becoming a FAQ.

Microsoft's Active Directory Service is composed of two separate
components, even though they come all wrapped up together.

The directory proper stores objects in an X.500-like hierarchy.  It is
accessible through LDAP, and also through the proprietary ADSI.  If a
client (e.g. Exchange) manipulates objects through LDAP then OpenLDAP
might be able to serve as a replacement for the directory portion of ADS.
I am not aware of anyone who has done so.

The other component is authentication, which is handled by a somewhat
hacked Kerberos.  An LDAP server is not enough; you need a Kerberos KDC as
well, and the LDAP server should use Kerberos for authentication when
doing access control.  Microsoft has implemented a proprietary 'tdata'
blob as part of the principal, to tie the existing NT security model into
Kerberos.  Last I heard, they were not saying what the value represents,
although my guess would be that it is a list of SIDs.  You have to know
how to generate an acceptable value for this tdata in order to make a
principal which is fully functional w.r.t. ADS authentication.  I don't
know of anyone who has done this either.

Since Exchange predates ADS, it probably uses ADSI rather than LDAP --
perhaps even a downlevel version of ADSI.  It may be possible to make an
adaptation layer of some sort to make it play with LDAP, but again I don't
know of anyone who has done this.

There are some other bits required to make a host recognizable as an ADS
server.  Mostly they are DNS glue pointing to the KDC and the directory
service, so that clients can find them.  These *are* documented in some MS
whitepaper that I don't have nearby at the moment.  To round out the set,
you need Dynamic DNS and a DHCP server which uses it, although these may
not be strictly required.  (You can get these last from ISC, though the
DDNS bits may still be somewhat experimental.)

-- 
Mark H. Wood, Lead System Programmer   mwood@IUPUI.Edu
Make a good day.