Я выполняю аутентификацию на сервере LDAP в моем приложении rails, приведенный ниже код работает локально, но не на сервере.
На сервере он выдает Net::LDAP::BindingInformationInvalidError (Invalid binding information)
при попытке входа в приложение, но работает через консоль
Я довольно новичок в Ruby и не могу найти правильный способ его отладки ... Я знаю, что конфигурация LDAP верна, потому что я могу аутентифицировать и связыватьиз консоли или в моей локальной среде разработки .. Я пытался передать :verbose => true
конструктору LDAP, но безрезультатно ...
require 'net/ldap'
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class LdapAuthenticatable < Authenticatable
def authenticate!
if params[:user]
ldap = Net::LDAP.new :host => 'XX.XX.XX.XX',
:port => 636,
:connect_timeout => 5,
:base => 'CN=Configuration,DC=internal,DC=XX,DC=XX',
:encryption => {
:method => :simple_tls
},
:auth => {
:method => :simple,
:username => ENV['LDAP_USER'],
:password => ENV['LDAP_PASSWORD']
}
result = ldap.bind_as(:base => "OU=Users,OU=XX,DC=XX,DC=XX,DC=XX",
:filter => "(userPrincipalName=#{email})",
:password => password,
)
if result
user = User.find_by(email: email)
success!(user)
else
return fail(:invalid_login)
end
end
end
def email
params[:user][:email]
end
def password
params[:user][:password]
end
end
end
end
Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
решено
получилосьпеременные ENV, которые не были прочитаны.