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}usern...@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 <[email protected]> wrote:
> From: Howard Chu <[email protected]>
> Subject: Re: >Proxy Just Binds/Authentications from another LDAP?
> To: "Don Hoover" <[email protected]>
> Cc: [email protected]
> 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/
>