2011-12-06 20 views
1

現在、RAILS3のLDAP認証を使用したDeviseを実装しようとしています。私はそれをセットアップしていると接続し、認証しようとしているようだが、失敗するようだ。私は実際のエラーメッセージをどのような種類のものでも使用しているようには思えません。ログインセッションのLDAP認証の問題を持つデビット

ログイン:

Started POST "https://stackoverflow.com/users/sign_in" for 192.168.160.1 at Tue Dec 06 05:20:16 +0000 2011 
    Processing by Devise::SessionsController#create as HTML 
    Parameters: {"commit"=>"Sign in", "authenticity_token"=>"G2tEq9gPpJiN0RhanTd8HMWno62F+1oLWbU4xdX78bg=", "utf8"=>"\342\234\223", "user"=>{"remember_me"=>"0", "password"=>"[FILTERED]", "login"=>"[email protected]"}} 
    User Load (0.1ms) SELECT `users`.* FROM `users` WHERE `users`.`login` = '[email protected]' LIMIT 1 
    LDAP: LDAP dn lookup: [email protected] 
    LDAP: LDAP search for login: [email protected] 
    LDAP: Authorizing user [email protected],ou=groupxx,o=company.com 
    LDAP: LDAP dn lookup: [email protected] 
    LDAP: LDAP search for login: [email protected] 
Completed 401 Unauthorized in 7147ms 
    Processing by Devise::SessionsController#new as HTML 
    Parameters: {"commit"=>"Sign in", "authenticity_token"=>"G2tEq9gPpJiN0RhanTd8HMWno62F+1oLWbU4xdX78bg=", "utf8"=>"\342\234\223", "user"=>{"remember_me"=>"0", "password"=>"[FILTERED]", "login"=>"[email protected]"}} 
Rendered devise/shared/_links.erb (0.1ms) 
Rendered devise/sessions/new.html.erb within layouts/application (5.0ms) 
Completed 200 OK in 23ms (Views: 21.4ms | ActiveRecord: 0.0ms) 


Started GET "/assets/defaults.js" for 192.168.160.1 at Tue Dec 06 05:20:23 +0000 2011 
Served asset /defaults.js - 404 Not Found (3ms) 

ActionController::RoutingError (No route matches [GET] "/assets/defaults.js"): 


Rendered /usr/local/lib/ruby/gems/1.8/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms) 

LDAPの設定:

development: 
    host: ldap.company.com 
    port: 636 
    attribute: mail 
    base: ou=groupxx,o=company.com 
    #admin_user: cn=admin,dc=test,dc=com 
    #admin_password: admin_password 
    ssl: true 
    # <<: *AUTHORIZATIONS 

私はその端から何かを確認することはできませんので、私は、LDAPサーバへのアクセスを持っていません。私が持っている主な問題は、ログインプロセスからエラーメッセージが出ないことです。ユーザーを見つけることができませんか?ユーザーは見つかりましたが、ログインに失敗しましたか? 2つのLDAP検索を行う理由は何ですか?

答えて

3

私は私が持っていた問題は、私の会社(IBM)が使用するLDAPサーバが正式にNET-LDAPでサポートされているものと異なるプロトコル標準を使用していたということでしたが分かりました。 あなたは、単にわずかに異なる規格にPagedResultsコントロールの種類を変更する必要があります:私は、LDAP管理ユーザーを持っていない場合を除き

#PagedResults = "1.2.840.113556.1.4.319" # Microsoft evil from RFC 2696 
PagedResults = "2.16.840.1.113730.3.4.2" # IBM Bluepages compatible ControlType 

Full code change details here.

が、私はそれをフォークとhere on GitHub.

+0

変更した内容の詳細を教えてください。私は非常に似たような問題を抱えています。私はあなたのソリューションを何とか使って解決できるかどうか疑問に思います。 –

+0

修正に関する追加情報を追加しました。それが役に立てば幸い。 –

4

ここに同じ問題があります。しかし、ldapsearchは、動作します。

ldapsearch -Z -h ldap.company.com -p 389 -s sub -D 
"cn=somebody,ou=my_ou,dc=ldap,dc=company,dc=com" -W -b 
"dc=ldap,dc=company,dc=com" "(&(cn=somebody))" mail 

ソリューション::私は解決策を見つけた

:当社は、ここでのActiveDirectoryサーバを実行しているconfig/initializers/devise.rbで、私はconfig.ldap_use_admin_to_bind = trueをアクティブにするために逃しました。このフラグでのみ、devise_ldap_authenticatableは実際にはconfig/ldap.ymlで定義されたBindDN(admin_user、admin_passwordの両方とも非コメント化が必要)を使用します。

+1

の上に固定します/パス。私は私たちのLDAPサーバーがanonバインドを使用すると信じています。 –

0

ActiveDirectoryで同じ問題が発生しました。私はバインドユーザーを使用してみましたが、どちらも助けませんでした。私はスクリーンキャスト210にしたがって考案を変更してユーザー名フィールドを使用しました。 Here's私ldap.ymlは

development: 
    host: dcburda0 
    port: 636 
    attribute: cn 
    base: OU=Organisation,DC=mydomain,DC=com 
    admin_user: CN=username,OU=Support Center Muenchen,OU=name GmbH,OU=Organisation,DC=mydomain,DC=com 
    admin_password: password 
    ssl: true 
+0

あなたがコメントしている答えの1日後に、受け入れられた回答が投稿されました。 ;-) – Tass