2011-06-14 5 views
1

나는 첫 번째 전율 실험에 신비한 문제가 있습니다. 내 사용자 이름과 암호로 로그인 할 수 있으며 제대로 로그 아웃 할 수 있습니다. 나는 여러 번 반복 할 수 있지만 일단 잘못된 암호를 입력하면 다른 사용자를 시도해도 다시 로그인 할 수 없습니다. 나는 "message"=>"invalid_credentials"을 얻는다. 내 응용 프로그램을 다시 시작하면 암호를 잘못 입력 할 때까지 모든 것이 다시 정상적으로 처리됩니다. 그것은 주어진 :bind_dn 매개 변수를 연결하는 첫 번째 실패 (아래 참조) 전에 omniauth 및 LDAP를 사용하여 실패 후 로그인 할 수 없습니다.

는 예상대로 :

[14/Jun/2011:16:45:33 +0200] conn=7780 op=22 msgId=23 - BIND dn="edarabos" method=128 version=3, Invalid DN 
: 내 이름으로 제조 된 DN하는 바인드에 연결하는 첫 번째 실패 후

[14/Jun/2011:17:01:33 +0200] conn=7796 op=0 msgId=1 - BIND dn="cn=nss,o=People,o=IAN,o=AD,o=Secret" method=128 version=3 

나는 다음과 같은 구성 (config/initializers/omniauth.rb)을 가진 Railscast # 241 http://railscasts.com/episodes/241-simple-omniauth을 따라 갔다 :

Rails.application.config.middleware.use OmniAuth::Strategies::LDAP\ 
    , :host => '127.0.0.1'\ 
    , :method => :plain\ 
    , :port => 389\ 
    , :base => 'o=IAN,o=AD,o=Secret'\ 
    , :uid => 'uid'\ 
    , :bind_dn => 'cn=nss,o=People,o=IAN,o=AD,o=Secret'\ 
    , :password => 'TOPSECRET' 

실수를 했습니까? 그게 버그 야? 미리 감사드립니다!

- JRuby 1.5.1, Ruby 1.8.7, Rails 3.0.7, omniauth 0.2.6을 사용하고 있습니다. 내가 구성을 다시 실행하면

UPDATE

나는 성공적으로 로그인하는 데 사용할 수있는 각 실패 후 (... OmniAuth :: 전략 :: LDAP를 ... 사용). 나는 잠시 동안 내가 끝났다고 믿었고 새로운 문제가 생겼다. 성공 후 로그인 및 로그 아웃 성공적인 인증 후에 구성을 다시 실행하더라도 다른 사용자로 로그인 할 수 없습니다.

옵션에 주어진 bind_dn은 서비스 계정입니다. Omniauth는 해당 계정으로 LDAP 서버에 바인드하고 주어진 자격 증명 ('user1')을 검색하여 검색 결과의 uid와 바인드하여 결과를 찾습니다.

다음 로그인 시도시 (user2 사용) LDAP 구성은 구성에 따라 리 바인드되지 않고 실행됩니다. 이것은 할 수있는 일입니다. User1은 서비스 계정이 아니므로 검색 결과가 없습니다. 그런 다음 자격 증명의 사용자 이름을 사용하여 bind_dn으로 리 바인드를 시도하고 실패합니다. 이것은 정확하게 달리 구성되었으므로 수행 할 또 다른 braindead 작업입니다!

+0

나는 omniauth를 건너 뛰어 'net/ldap'을 직접 사용합니다. 찬반 양론 수락 :-) – Notinlist

+0

Devise에서 'net/ldap'을 사용하려고 했습니까? –

+0

@Bregor Devise를 시도하지 않았습니다. 인증 작성을위한 기한에 도달했으나 다른 실험은 적합하지 않았습니다. 나는 하루 만에 "net/ldap"의 직접 사용을 프로그래밍했다. 시간이 지남에 따라 프로젝트에 다른 유형의 인증이 필요하지 않습니다. – Notinlist

답변

1

omniauth를 건너 뛰었으므로 'net/ldap'을 직접 사용합니다. 찬반 양론 수락 :-)

관련 문제