我有一个带有 authlogic 和 LDAP 的 rails 应用程序,但我的问题是我可以在日志文件中看到所有用户的密码,是否有什么东西可以加密这些密码。
对于 ldap,我使用 :encryption simple_TLS
谢谢你的帮助
最佳答案
这就是我用 authlogic 做的方式和 net-ldap :
配置/ldap.yml
production:
host: localhost
port: 636
base: ou=people,dc=mydomain
admin_user: cn=admin,dc=mydomain
admin_password: password
ssl: true
应用程序/模型/ldap_connect.rb
class LdapConnect
attr_reader :ldap
def initialize(params = {})
ldap_config = YAML.load_file("#{RAILS_ROOT}/config/ldap.yml")[RAILS_ENV]
ldap_options = params
ldap_options[:encryption] = :simple_tls if ldap_config["ssl"]
@ldap = Net::LDAP.new(ldap_options)
@ldap.host = ldap_config["host"]
@ldap.port = ldap_config["port"]
@ldap.base = ldap_config["base"]
@ldap.auth ldap_config["admin_user"], ldap_config["admin_password"] if params[:admin]
end
end
应用程序/模型/user_session.rb
class UserSession < Authlogic::Session::Base
verify_password_method :valid_ldap_credentials?
end
应用程序/模型/user.rb
class User < ActiveRecord::Base
acts_as_authentic do |c|
c.validate_password_field = false
c.logged_in_timeout = 30.minutes
end
def dn
"cn=#{self.email},ou=people,dc=mydomain"
end
def valid_ldap_credentials?(password_plaintext)
ldap = LdapConnect.new.ldap
ldap.auth self.dn, password_plaintext
ldap.bind # will return false if authentication is NOT successful
end
end
关于ruby-on-rails - Authlogic LDAP : encrypt communication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682457/