ldap-bind

  1. ldap-bind
    1. Description
    2. API
    3. Example
    4. Author

Description

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.

API

[procedure] (ldap-initialize uris #!optional (version 3))

Initializes the LDAP library and opens a connection to an LDAP server. Returns an ldap-connection record.

[procedure] (ldap-bind conn dn pass)

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.

[procedure] (ldap-unbind conn)

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.

Example

(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)

Author

Original implementation work by Moritz Heidkamp, updated to latest APIs and released with just the ldap-bind feature by Caolan McMahon (with kind permission).