Class | CASServer::Authenticators::LDAP |
In: |
lib/casserver/authenticators/ldap.rb
|
Parent: | CASServer::Authenticators::Base |
# File lib/casserver/authenticators/ldap.rb, line 26 26: def validate(credentials) 27: read_standard_credentials(credentials) 28: 29: return false if @password.blank? 30: 31: raise CASServer::AuthenticatorError, "Cannot validate credentials because the authenticator hasn't yet been configured" unless @options 32: raise CASServer::AuthenticatorError, "Invalid LDAP authenticator configuration!" unless @options[:ldap] 33: raise CASServer::AuthenticatorError, "You must specify a server host in the LDAP configuration!" unless @options[:ldap][:host] || @options[:ldap][:server] 34: 35: raise CASServer::AuthenticatorError, "The username '#{@username}' contains invalid characters." if (@username =~ /[*\(\)\0\/]/) 36: 37: preprocess_username 38: 39: @ldap = Net::LDAP.new 40: 41: 42: @options[:ldap][:host] ||= @options[:ldap][:server] 43: @ldap.host = @options[:ldap][:host] 44: @ldap.port = @options[:ldap][:port] if @options[:ldap][:port] 45: @ldap.encryption(@options[:ldap][:encryption].intern) if @options[:ldap][:encryption] 46: 47: begin 48: if @options[:ldap][:auth_user] 49: bind_success = bind_by_username_with_preauthentication 50: else 51: bind_success = bind_by_username 52: end 53: 54: return false unless bind_success 55: 56: entry = find_user 57: extract_extra_attributes(entry) 58: 59: return true 60: rescue Net::LDAP::LdapError => e 61: raise CASServer::AuthenticatorError, 62: "LDAP authentication failed with '#{e}'. Check your authenticator configuration." 63: end 64: end