Using SASL with the tcllib ldap client
The current SASL support for the ldap client has been tested with openLDAP 2.3 and CyrusSASL,
but is considered experimental.
The OpenLDAP slapd.conf file used for testing had the following entries to map the
SASL auth information, the actual SASL passwords were stored in the sasldb with the help
of saslpasswd2:
# SASL Mappings
#
sasl-host localhost
sasl-realm ldap
authz-regexp
uid=([^,]+),(cn=[^,]+,)?cn=digest-md5,cn=auth
ldap:///ou=SomeOU,dc=tcllib,dc=tcltk??one?(uid=$i)
authz-regexp
uid=([^,]+),(cn=[^,]+,)?cn=cram-md5,cn=auth
ldap:///ou=SomeOU,dc=tcllib,dc=tcltk??one?(uid=$i)
A rather typical user of that server would be for example:
cn=James Bond,ou=SomeOU,dc=tcllib,dc=tcltk
objectClass inetOrgPerson
cn James Bond
sn Bond
uid u007
Now you can SASL auth with the tcllib ldap client with the following:
package require ldap 1.6
set handle [ldap::connect localhost]
set auth [ldap::bindSASL u007 "mollypenny"]
if {$auth} {
puts "Succesfully bound with SASL"
} else {
puts "SASL bind failed"
}
To find out your real authzId, you can then use the ldap::whoami command.
puts "auhtzId: [ldap::whoami $handle]"