
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
github.com/cschiewek/devise_ldap_authenticatable
This fork changes a few lines to allow the admin binding to be set to the user trying to log in.
Devise LDAP Authenticatable is a LDAP based authentication strategy for the Devise authentication framework.
If you are building applications for use within your organization which require authentication and you want to use LDAP, this plugin is for you.
Devise LDAP Authenticatable works in replacement of Database Authenticatable. This devise plugin has not been tested with DatabaseAuthenticatable enabled at the same time. This is meant as a drop in replacement for DatabaseAuthenticatable allowing for a semi single sign on approach.
For a screencast with an example application, please visit: http://random-rails.blogspot.com/2010/07/ldap-authentication-with-devise.html
Note: Rails 3.x / Devise 2.x has been moved to the 0.7 branch. All 0.7.x gems will support Rails 3, where as 0.8.x will support Rails 4.
In the Gemfile for your application:
gem "devise_ldap_authenticatable"
To get the latest version, pull directly from github instead of the gem:
gem "devise_ldap_authenticatable", :git => "git://github.com/cschiewek/devise_ldap_authenticatable.git"
Run the rails generators for devise (please check the devise documents for further instructions)
rails generate devise:install
rails generate devise MODEL_NAME
Run the rails generator for devise_ldap_authenticatable
rails generate devise_ldap_authenticatable:install [options]
This will install the ldap.yml, update the devise.rb initializer, and update your user model. There are some options you can pass to it:
Options:
[--user-model=USER_MODEL] # Model to update
# Default: user
[--update-model] # Update model to change from database_authenticatable to ldap_authenticatable
# Default: true
[--add-rescue] # Update Application Controller with rescue_from for DeviseLdapAuthenticatable::LdapException
# Default: true
[--advanced] # Add advanced config options to the devise initializer
Given that ldap_create_user
is set to true and you are authenticating with username, you can query an LDAP server for other attributes.
in your user model you have to simply define ldap_before_save
method:
def ldap_before_save
self.email = Devise::LDAP::Adapter.get_ldap_param(self.username,"mail").first
end
In initializer config/initializers/devise.rb
:
ldap_logger
(default: true)
ldap_create_user
(default: false)
ldap_config
(default: #{Rails.root}/config/ldap.yml)
ldap_update_password
(default: true)
ldap_check_group_membership
(default: false)
ldap_check_attributes
(default: false)
ldap_use_admin_to_bind
(default: false)
ldap_check_group_membership_without_admin
(default: false)
These parameters will be added to config/initializers/devise.rb
when you pass the --advanced
switch to the generator:
ldap_auth_username_builder
(default: Proc.new() {|attribute, login, ldap| "#{attribute}=#{login},#{ldap.base}" }
)
ldap_auth_password_build
(default: Proc.new() {|new_password| Net::LDAP::Password.generate(:sha, new_password) }
)
Using a "username" instead of an "email": The field that is used for logins is the first key that's configured in the config/initializers/devise.rb
file under config.authentication_keys
, which by default is email. For help changing this, please see the Railscast that goes through how to customize Devise. Also, this documentation from Devise can very helpful.
SSL certificate invalid: If you're using a test LDAP server running a self-signed SSL certificate, make sure the appropriate root certificate is installed on your system. Alternately, you may temporarily disable certificate checking for SSL by modifying your system LDAP configuration (e.g., /etc/openldap/ldap.conf
or /etc/ldap/ldap.conf
) to read TLS_REQCERT never
.
For additional support, questions or discussions, please see the discussion forum on Google Groups
Devise LDAP Authenticatable uses a running OpenLDAP server to do automated acceptance tests. You'll need the executables slapd
, ldapadd
, and ldapmodify
.
On OS X, this is available out of the box.
On Ubuntu, you can install OpenLDAP with sudo apt-get install slapd ldap-utils
. If slapd runs under AppArmor, add an exception like this to /etc/apparmor.d/local/usr.sbin.slapd
to let slapd read our configs.
/path/to/devise_ldap_authenticatable/spec/ldap/** rw,$
To start hacking on devise_ldap_authentication
, clone the github repository, start the test LDAP server, and run the rake test task:
git clone https://github.com/cschiewek/devise_ldap_authenticatable.git
cd devise_ldap_authenticatable
bundle install
# in a separate console or backgrounded
./spec/ldap/run-server
bundle exec rake db:migrate # first time only
bundle exec rake spec
Released under the MIT license
Copyright (c) 2012 Curtis Schiewek, Daniel McNevin, Steven Xu
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.