Ok. I have it working pretty well.
I can believe how simple it really was.
The peice I was missing was putting "{SASL}username" into the password field for the openldap record.
This apparently toggles openldap to use SASL for the authentication instead of the local info.
This lets me toggle a user between being authenticated by the openldap server itself or asking SASL to do the authentication for it.
Funny thing is, after I figure this all out, I came across this documentation today which does a pretty good job explaining some of it...At this point I could have written this myself but hopefully it will explain some stuff to others: http://www.openldap.org/doc/admin24/security.html
The one place I differed was I didn't really use a 'realm', because SASL does not need one for just doing authentication to another LDAP server.
I found just putting in {SASL}username, or {SASL}username@realm worked pretty much the same in my case.
I also just configured saslauthd to have a ldap_servers, and ldap_search_base only, since SASL is using username and password provided through openldap to do the binds.
I guess in some ways I am doing a unique thing in that I am actually proxying another real ldap server, and not doing active directory which so many seem to be doing these days.
This was easy enough to encourage me to look at doing some of that data merging to meld data from this external ldapserver with the local data in the record it returns to queries.
--- On Wed, 2/3/10, Howard Chu hyc@symas.com wrote:
From: Howard Chu hyc@symas.com Subject: Re: >Proxy Just Binds/Authentications from another LDAP? To: "Don Hoover" dxh@yahoo.com Cc: openldap-technical@openldap.org Date: Wednesday, February 3, 2010, 4:11 PM Don Hoover wrote:
Well, I have been working on this question and have
had an idea.
Would a way to accomplish this is by using SASL? It
took me about 10
minutes
to figure out how to configure saslauthd to verify binds to the other LDAP server.
Openldap can use SASL right? So I just need to get
slapd to use SASL to verify the binds to the other external ldap server.
So I would have: ldapclient bind request-> openldap slapd
-> SASL-> external ldap server bind
Is this a good idea?
It would work. Whether it's a good idea or not... The mailing list archives are already full of discussions on that topic, no point in repeating.
I don't see how to make slapd use the sasl server for
this though, the
only
examples I can find are to use kerberos.
Any ideas on how to get slapd to just use sasl like I
have it setup?
You have to configure OpenLDAP with --enable-spasswd. And then you have to actually set the proper values in each user's userPassword.
You should also look into the ITS contributions.
http://www.openldap.org/its/index.cgi/Contrib?id=5042 http://www.openldap.org/its/index.cgi/Contrib?id=5856
They still need some cleaning up, which is why they have not been pushed into CVS yet.
-- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/