代码之家  ›  专栏  ›  技术社区  ›  Ethan

我应该使用什么gems让Ruby应用程序与LDAP服务器对话?

  •  0
  • Ethan  · 技术社区  · 15 年前

    我的总体目标是让我的Rails应用程序的用户通过LDAP对我们组织的ActiveDirectory服务器进行身份验证。(我说得对吗?)

    我想试试 Ruby ActiveLDAP 宝石。

    医生说这取决于…

    RubyLDAP

    或者…

    ruby-net-ldap

    我用哪一个重要吗?

    通过调查Ruby Activeldap,我是否朝着正确的总方向前进?还有别的更好的吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community Anvaka    7 年前

    我有一个OpenLDAP服务器,我用它来验证我的Rails应用程序。

    我基本上使用AuthLogic和Hack来支持LDAP,使用RubyNetLDAP gem与LDAP服务器对话。

    我用了一个相当基本的 authlogic 按中的详细信息设置 tutorial ,但有一些变化:

    class UserSession < Authlogic::Session::Base
      verify_password_method :valid_ldap_credentials?
    end
    
    class User < ActiveRecord::Base
      acts_as_authentic do |c|
        c.validate_password_field = false
        c.logged_in_timeout = 30.minutes
      end
    
      def valid_ldap_credentials?(password_plaintext)
        ldap = ldap_connect
        ldap.auth self.dn, password_plaintext
        ldap.bind # will return false if authentication is NOT successful
      end
    
      def ldap_connect(params = {})
        ldap_config = YAML.load_file("#{RAILS_ROOT}/config/ldap.yml")[RAILS_ENV]
        ldap_options = params.merge({:encryption => :simple_tls})
        ldap = Net::LDAP.new(ldap_options)
        ldap.host = ldap_config["host"]
        ldap.port = ldap_config["port"]
        ldap.base = ldap_config["base"]
        ldap.auth ldap_config["admin_user"], ldap_config["admin_password"] if params[:admin]
    
        return ldap
      end
    
    end
    

    有一个 effort 做一个ldap的AuthLogic插件,但是我有一段时间没有看到任何进展。

    我发现的困难(和 asked about )是测试。我基本上必须为测试设置LDAP服务器的生产、开发和测试实例。

        2
  •  1
  •   nasmorn    15 年前

    如果您只想使用LDAP并滚动您自己的授权资料,我可以推荐RubyNetLDAP。

    但是,如果由于某种原因(我只有登录名),您没有用户名,那么需要一个单独的用户来查询LDAP。