Hi All
I am at wits end trying to get LDAP to work in Rails running on ubuntu (yes, I'm a noob!). I have version 0.9.7 of ruby-ldap installed. Every thing seems fine, until I test in the console:
>> require 'ldap'
=> ["LDAP"]
>> l = LDAP::Conn.new('xxxx.xxxx.xxxx.net', 389)
=> #<LDAP::Conn:0xb74a4a40>
>> l.set_option( LDAP::LDAP_OPT_PROTOCOL_VERSION, 3 )
=> #<LDAP::Conn:0xb74a4a40>
>> l.bind('cn=xxxx,dc=xxxx,dc=xxxx,dc=xxxx', 'xxxxxxx')
LDAP::ResultError: Can't contact LDAP server
from (irb):4:in `bind'
from (irb):4
Now, it appears that a connection object is created, but yet it says that it can't contact the server. I can telnet to the relevant server so there is connectivity but further than that, I have no idea.
Any clues as to what might be causing this?
All help appreciated.
Rory
An LDAP object doesn't try to connect when it's created, so don't be
surprised that succeeded. When you say you can telnet, was that to the
standard port 23 or did you test 389.
Mack Earnhardt wrote:
An LDAP object doesn't try to connect when it's created, so don't be
surprised that succeeded. When you say you can telnet, was that to the
standard port 23 or did you test 389.
<snip>
Hi
It was port 389. I also, at the suggestion of one of my colleagues, tried setting up Thunderbird to use the LDAP server for an address book. This worked perfectly, so, in terms of connectivity it seems to be working.
Does Rails store any debugging/error info that could help pinpoint a reason for this lack of connectivity?
Regards
Rory
Craig White wrote:
<snip>
----
here's how I do it using ruby-ldap
** my_ldap.rb **
require "ldap"
# Provides access to authenticate user from LDAP using the user provided
user name and password
class MyLDAP < LDAP::Conn
BASE_DN = "dc=example,dc=com"
PEOPLE_DN = "ou=people,dc=example,dc=com"
LDAP_HOST = "server.example.com"
LDAP_PORT = 389
PROTOCOL_VERSION = 3
# sets up connection to LDAP server
def initialize (host = LDAP_HOST, version = PROTOCOL_VERSION)
super( host, LDAP_PORT )
set_option( LDAP::LDAP_OPT_PROTOCOL_VERSION, version )
return self
end
# Bind with the user supplied information
def bind(mydn, pass)
dn = "uid=" + mydn + "," + PEOPLE_DN
super( dn, pass )
end
end
<snip>
Hi Craig
I will give this a try. Can you perhaps tell me why you use "super" in the method definitions?
Rory