2016-06-24 8 views
2

質問devise_ldap_authenticationを使用してMicrosoft Active Directoryに接続する際に問題が発生しています。何らかの理由で私はLDAP検索の結果が0になるのを覚えています。私は正しい資格情報を使用しているので100%確信していますので、正しいクラスを試すことができるかどうかを調べるために 'net/ldap'それは私のテストクラスで動作しますが、私はまだdevise_ldap_authで認証できません。私のテストクラスに合うようにconfig/ldap.ymlを設定することで、どんな助けでも大歓迎または助けになるでしょう。ここで ldapを使用してdevise ruby​​ on railsで広告に接続する

はここで、これは工夫でLDAPを使用しているとき、私は戻って得るものです私のdevise.rb

Devise.setup do |config| 
    # ==> LDAP Configuration 
    config.ldap_logger = true 
    # config.ldap_create_user = false 
    # config.ldap_update_password = true 
    config.ldap_config = "#{Rails.root}/config/ldap.yml" 
    # config.ldap_check_group_membership = false 
    # config.ldap_check_group_membership_without_admin = false 
    config.ldap_check_attributes = true 
    #config.ldap_use_admin_to_bind = true 
    # config.ldap_ad_group_check = false 

である私のconfig/ldap.yml

#Environment 
development: 
    host: myldap.mydomain.com 
    port: 389 
    attribute: sAMAccountname 
    base: dc=mydomain, dc=com 
    admin_user: cn=admin,dc=mydomain,dc=com 
    admin_password: password 
    #ssl: false 

です。ここで

D, [2016-06-24T07:01:30.558440 #42760] DEBUG -- : LDAP: LDAP dn lookup: sAMAccountName=snow 
D, [2016-06-24T07:01:30.558507 #42760] DEBUG -- : LDAP: LDAP dn lookup: sAMAccountName=snow 
D, [2016-06-24T07:01:30.558549 #42760] DEBUG -- : LDAP: LDAP search for login: sAMAccountName=snow 
D, [2016-06-24T07:01:30.558579 #42760] DEBUG -- : LDAP: LDAP search for login: sAMAccountName=snow 
D, [2016-06-24T07:01:30.594029 #42760] DEBUG -- : LDAP: LDAP search yielded 0 matches 
D, [2016-06-24T07:01:30.594099 #42760] DEBUG -- : LDAP: LDAP search yielded 0 matches 
D, [2016-06-24T07:01:30.594146 #42760] DEBUG -- : LDAP: Authorizing user sAMAccountName=snow,dc=mydomain, dc=com 
D, [2016-06-24T07:01:30.594180 #42760] DEBUG -- : LDAP: Authorizing user sAMAccountName=snow,dc=mydomain, dc=com 
D, [2016-06-24T07:01:30.611308 #42760] DEBUG -- : LDAP: Not authorized because not authenticated. 
D, [2016-06-24T07:01:30.611377 #42760] DEBUG -- : LDAP: Not authorized because not authenticated. 

は、それがnilを返しますされていない場合、それが一致した場合、これが私のアカウント情報を返します^私のMicrosoft AD

require 'net/ldap' # gem install ruby-net-ldap 
module Test 
    class PutAd 
    SERVER = 'myldap.mydomain.com' 
    PORT = 389 
    BASE = 'DC=mydomain,DC=com' 
    DOMAIN = 'mydomain.com' 

    ATTR_SV = { 
       :login => :samaccountname, 
       :first_name => :givenname, 
       :last_name => :sn, 
       :email => :mail 
       } 


    def self.authenticate(login, pass) 
     return nil if login.empty? or pass.empty? 

     conn = Net::LDAP.new :host => SERVER, 
          :port => PORT, 
          :base => BASE, 
          :auth => { :username => "#{login}@#{DOMAIN}", 
             :password => pass, 
             :method => :simple } 
     if conn.bind and user = conn.search(:filter => "sAMAccountName=#{login}").first 
     return self.new(user) 
     else 
     return nil 
     end 
    rescue Net::LDAP::LdapError => e 
     return nil 
    end 
    end 
end 

にLDAPで認証するように動作します私のテストクラスです。

答えて

1

私の会社は、ユーザーを認証する方法が異なります。私は私のdevise ldap installに高度なフラグを追加し、それに応じてこれを設定し、それが動作するようにプレストします。

==>詳細LDAP設定

config.ldap_auth_username_builder = Proc.new() {|attribute, login, ldap| "#{login}@mydomain.com"} 
関連する問題