2012-12-10 3 views
3

어떤 이유로 인해 내 페이지에서 Devise로 인증하는 것이 작동하지 않는 것 같아 인증되지 않은 401 오류가 발생합니다. net/ldap의 단계를 거치면 제대로 묶여있는 것처럼 보입니다. 문제가있는 곳을 잘 모르겠습니다. 서버에서LDAP 인증이 제대로 바인딩되지 않았습니까?

출력 : ldap.yml에서

Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"â", "authenticity_token"=>"0uaLJJKobrDkn1mGDRP/RM6gIec+Wi7oykgWYuutsvk=", "user"=>{"login"=><login>, "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
Completed 401 Unauthorized in 14ms 

: devise.rb에서

development: 
    host: <hostname> 
    port: 389 
    attribute: sAMAccountName 
    base: <base> 
    admin_user: <admin user> 
    admin_password: <admin pass> 
    ssl: false 
    # <<: *AUTHORIZATIONS 

:

IRB에 대한 테스트에서
config.ldap_use_admin_to_bind = true 
config.authentication_keys = [ :login ] 

:

$ irb 
irb(main):001:0> require 'rubygems' 
=> true 
irb(main):002:0> require 'net/ldap' 
=> true 
irb(main):003:0> ldap = Net::LDAP.new 
=> #<Net::LDAP:0x141d19 @host="127.0.0.1", @auth={:method=>:anonymous}, @encryption=nil, @base="dc=com", @port=389, @verbose=false, @open_connection=nil> 
irb(main):004:0> ldap.host = <hostname> 
=> <hostname> 
irb(main):005:0> ldap.port = 389 
=> 389 
irb(main):006:0> ldap.base = <base> 
=> <base> 
irb(main):007:0> ldap.auth <admin user>, <admin pass> 
=> {:method=>:simple, :username=><admin user>, :password=><admin pass>} 
irb(main):008:0> dn = ldap.search(:filter => Net::LDAP::Filter.eq('sAMAccountName', <login>)).first.dn 
=> <login dn information> 
irb(main):009:0> ldap.auth dn, <password> 
=> {:method=>:simple, :username=><login dn information>, :password=><password>} 
irb(main):010:0> ldap.bind 
=> true 

당신이 볼 수 있듯이 바인드는 정상적인 net/ldap 테스트를 통해 정상적으로 작동하지만 Devise 모듈이 수행해야하는 작업을 복제하더라도 어떤 이유로 든 실제 Rails 사이트를 통과 할 때 작동하지 않는 것처럼 보입니다.

+0

이 문제를 해결할 방법을 찾았습니까? –

답변

0

인증 키는 login이지만 username입니다. 문제가 해결 될 수도 있습니다

0

누군가 다른 사람이이 문제를 겪고있는 경우 this question이 나에게 필요한 수정 프로그램을 제공했습니다.

관련 문제