Secure authentication to AD
Frank Balluffi
frank.balluffi at db.com
Thu Aug 12 09:40:26 EDT 2004
Dmitri,
As Paul Nelson said (I accidentally deleted his message), it is possible
to access Active Directory via LDAP using SASL from Linux and UNIX using
OpenLDAP, Cyrus SASL and MIT Kerberos. Please note that you need to run
kinit before running your program. Here are two examples:
http://www.pppl.gov/~dperry/msktutil/
http://sourceforge.net/projects/netjoin/
Frank
"Pal, Dmitri" <dpal at rsasecurity.com>
Sent by: krbdev-bounces at mit.edu
08/11/2004 06:42 PM
To: <krbdev at mit.edu>
cc:
Subject: Secure authentication to AD
Hi,
I have the following issue:
Given:
a) Active directory
b) User login and password
c) Free Netscape LDAPv3 C library that has been downloaded couple years
ago
Goal:
a) Connect to Active directory securely and get some information
b) Use a simple solution (does not seem to fly though...)
I tried binding to LDAP with a simple login and password bind and that
works until the Active Directory is hardened. With simple bind the
password is sent in clear and this is not acceptable.
So I need to do it in a secure way.
Obvious choice is SASL. Investigating further I realised that the industry
standard and the SASL method implemented by Microsoft is
GSSAPI-Kerberosv5.
Am I on the right track?
Assuming yes and moving forward.
I was looking around for some good explanation of how the things work
together. But I do not have a clear view.
I looked at the RFCs, different code samples, diagrams, flow chars etc.
The picture that I now have in mind is following:
SASL is just a pipe between the client and server.
GSSAPI is responsible for creating the credential that is sent through
SASL to Active Directory.
As far as I understand the Active Directory is my KDC in this case.
So I initialize gss context using GSS api. That crerates some data that is
sent to the AD via LDAP SASL bind. Server cracks this data using GSS api
on its side and creates TGT ticket which it sends back (encrypted with
user password). Correct?
But now what? Where do I need to supply the password?
I have not found any place in any function in GSSAPI (may be I have not
looked deeply enough)
where I need to pass in the password for the user account?
As fas as I understand the GSSAPI Kerberosv5 implementation should be self
contained - i.e. internally it does not do any communication with KDC. All
the credential information is passed in, it does the processing signing,
etc. and creates the security token that I need to send over to server
through some mechanizm
(in my case LDAP SASL).
If this is the case then the server at some point should check my
password!
This is the only thing I have!
I cannot relay on having any other credential from previous (local)
authentication because the software
I am developing should be platform independent (UNIX,Linux,Windows) so the
TGT that one can have on windows is not available on UNIX. And please do
not tell me that to solve this problem from UNIX the only way is to
install the KDC on UNIX and establish trust with AD - that would be too
much.
I am really looking for some example that would take login and password
that have in posession, convert to whatever is needed using GSSAPI
Kerberosv5 method and feed it to SASL LDAP bind.
Help!!!
Thanks
Dmitri
_______________________________________________
krbdev mailing list krbdev at mit.edu
https://mailman.mit.edu/mailman/listinfo/krbdev
More information about the krbdev
mailing list