A CHICKEN egg implementing LDAP bind for authentication purposes using the OpenLDAP library. This is not a complete binding to the OpenLDAP library and only covers the authentication use-case.
Requires OpenLDAP / libldap and liblber to be installed.
Initializes the LDAP library and opens a connection to an LDAP server. Returns an ldap-connection record.
Attempts to bind to a dn using the given password. The conn argument is a connection record returned from ldap-initialize. Returns #t if the bind succeeded, #f otherwise.
Terminate the current association, and free the resources contained in the connecction record. After calling ldap-unbind the connection to the LDAP server is closed and the connection record becomes invalid.
(use ldap-bind)
(define ld (ldap-initialize "ldaps://example.com"))
(if (ldap-bind ld "uid=testuser,cn=users,dc=example,dc=com" "password")
(print "Welcome, authenticated user!")
(print "Invalid Credentials"))
;; or, using list syntax for a base dn:
(define base-dn
'((cn "users") (dc "example") (dc "com")))
(if (ldap-bind ld (cons '(uid "testuser") base-dn) "password")
(print "Welcome, authenticated user!")
(print "Invalid Credentials"))
(ldap-unbind ld)
Original implementation work by Moritz Heidkamp, updated to latest APIs and released with just the ldap-bind feature by Caolan McMahon (with kind permission).