Class CASServer::Authenticators::SQLRestAuth
In: lib/casserver/authenticators/sql_rest_auth.rb
Parent: CASServer::Authenticators::SQLEncrypted

This is a version of the SQL authenticator that works nicely with RestfulAuthentication. Passwords are encrypted the same way as it done in RestfulAuthentication. Before use you this, you MUST configure rest_auth_digest_streches and rest_auth_site_key in config.

Using this authenticator requires restful authentication plugin on rails (client) side.

  • git://github.com/technoweenie/restful-authentication.git

Methods

setup   validate  

Classes and Modules

Module CASServer::Authenticators::SQLRestAuth::EncryptedPassword

Public Class methods

[Source]

    # File lib/casserver/authenticators/sql_rest_auth.rb, line 55
55:   def self.setup(options)
56:     super(options)
57:     user_model.__send__(:include, EncryptedPassword)
58:   end

Public Instance methods

[Source]

    # File lib/casserver/authenticators/sql_rest_auth.rb, line 23
23:   def validate(credentials)
24:     read_standard_credentials(credentials)
25:     raise_if_not_configured
26: 
27:     raise CASServer::AuthenticatorError, "You must specify a 'site_key' in the SQLRestAuth authenticator's configuration!" unless  @options[:site_key]
28:     raise CASServer::AuthenticatorError, "You must specify 'digest_streches' in the SQLRestAuth authenticator's configuration!" unless  @options[:digest_streches]
29: 
30:     user_model = self.class.user_model
31: 
32:     username_column = @options[:username_column] || "email"
33: 
34:     $LOG.debug "#{self.class}: [#{user_model}] " + "Connection pool size: #{user_model.connection_pool.instance_variable_get(:@checked_out).length}/#{user_model.connection_pool.instance_variable_get(:@connections).length}"
35:     results = user_model.find(:all, :conditions => ["#{username_column} = ?", @username])
36:     user_model.connection_pool.checkin(user_model.connection)
37: 
38:     if results.size > 0
39:       $LOG.warn("Multiple matches found for user '#{@username}'") if results.size > 1
40:       user = results.first
41:       if user.crypted_password == user.encrypt(@password)
42:         unless @options[:extra_attributes].blank?
43:           extract_extra(user)
44:           log_extra
45:         end
46:         return true
47:       else
48:         return false
49:       end
50:     else
51:       return false
52:     end
53:   end

[Validate]