Oh yes. Good question. Why would anyone want to implement a LDAP Server? Besides the fact the OpenLDAP is a pain to set up and isn’t really rewarding in terms of perfomance, there are situations demanding LDAP Access to data residing in some kind of RDBMS. And that’s my motivation.
After seriously thinking about doing it all by myself, I plugged in Google to get some answers. And there is ruby-ldapserver, hosted at rubyforge. Unfortunately. the project seems pretty dead, nevertheless the Alpha 0.3.1 Version released there works fine, although without SASL support, only simple ( plain bind ) works.
How to use it? It’s very straightforward. Download the package, see that it’s in your path, and ready to rock. The package includes a few examples, showing off the beauty of the lib and ruby. That is how you implement a fully working LDAP Server ( okay, doing nothing, but works. )
class MyLdapOperations < LDAP::Server::Operation
def search(basedn, scope, deref, filter)
puts scope
puts basedn
puts deref
puts filter[1]
end
def simple_bind(version,dn,password)
puts "Auth: #{dn} + #{password}"
puts version
end
end
s = LDAP::Server.new(
:port => 1234,
:nodelay => true,
:listen => 10,
# :ssl_key_file => "key.pem",
# :ssl_cert_file => "cert.pem",
# :ssl_on_connect => true,
peration_class => MyLDAPOperations
)
s.run_tcpserver
s.join
You launch it, and it works. Certainly worth giving it a try, and a good piece to start if you want to get involved in the OS community.
