On 12/19/06, Eduardo Yez Parareda <eduardo.yanezNOSPAM / nospamgmail.com> wrote:
> > David's points are quite true, however the Net::LDAP#bind_as method is
> > intended to encapsulate the same technique. Now that you have it
> > working, I'd be very grateful if you tried #bind_as and see if it also
> > works for you.
>
> Hello, I've tried it, although before I read the documentation again more slowly :),
> and it worked right. What I don't understand is why whether you try to 'bind_as'
> with :method => :anonymous it doesn't work, and you have to put :method => :simple
> with blank username and password.
>
> The final code is:
>
> require 'net/ldap'
>
> module LDAP
>      # If login succeeds returns true
>      # If login fails returns false
>      def self.authenticate(identifier, password)
>        if identifier.to_s.length > 0 and password.to_s.length > 0
>          ldap_con = initialize_ldap_con(identifier, password)
>          if ldap_con.bind_as(:base => AppConfig.ldap_server_tree_base,
>                              :filter => "(uid=#{identifier})",
>                              :password => password)
>            true
>          else
>            false
>          end
>        end
>      end
>
>      private
>      def self.initialize_ldap_con(identifier, password)
>        setup = {:host => AppConfig.ldap_server_host,
>                 :port => AppConfig.ldap_server_port,
>                 :base =>AppConfig.ldap_server_tree_base }
>        setup[:auth] = { :method => :simple, :username => '', :password => '' }
>        Net::LDAP.new(setup)
>      end
>    end
>
> Although I'm going to change it in order to obtain user's information like e-mail or so after authentication.
>
>


Thanks. It's possible that either #bind or #bind_as (or both) are
mishandling the :anonymous auth method. I'll have a look.