Accessing LDAP from Ruby

2007-09-29

Ok, we’ve got our nifty Apache DS running with some custom data. This doesn’t do much unless our application can access the data in order to perform some sort of logic. So let’s connect the two worlds!

Make sure your Apache DS server is up and running. We first need to install a Ruby API for accessing LDAP. I found the simplest to use was ruby-net-ldap:

gem install ruby-net-ldap

Next, create a simple ldaptest.rb file to use the API:

require 'net/ldap'

username = 'uid=admin,ou=system'
password = 'secret'
ldap_con = Net::LDAP.new( {:host => 'localhost', :port => 10389, :auth =>
    { :method => :simple, :username => username, :password => password }} )
treebase = "dc=fiveruns,dc=com"
op_filter = Net::LDAP::Filter.eq( "objectClass", "person" )
ldap_con.search( :base => treebase, :filter => op_filter, :attributes=> 'dn') do |entry|
  puts "DN: #{entry.dn}"
end

Running it should give this output:

mikeperham:~$ ruby -rubygems ldaptest.rb
DN: uid=mike,ou=engineering,dc=fiveruns,dc=com

It works! Everything from this point on is just gravy. You can explore the ruby-net-ldap rdoc in more depth or try more advanced libraries like ActiveLdap.