rubycas-server 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +20 -3
- data/config.ru +1 -7
- data/lib/casserver/authenticators/sql.rb +20 -10
- data/lib/casserver/authenticators/sql_bcrypt.rb +17 -0
- data/lib/casserver/localization.rb +2 -2
- data/rubycas-server.gemspec +2 -2
- metadata +10 -7
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# RubyCAS-Server
|
1
|
+
# RubyCAS-Server
|
2
2
|
|
3
3
|
## Copyright
|
4
4
|
|
@@ -11,9 +11,26 @@ See http://github.com/gunark/rubycas-server/commits/
|
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
14
|
-
|
14
|
+
1. `git clone git://github.com/rubycas/rubycas-server.git`
|
15
|
+
2. `cd rubycas-server`
|
16
|
+
3. `cp config/config.example.yml config.yml`
|
17
|
+
4. Customize your server by modifying the `config.yml` file. It is well commented but make sure that you take care of the following:
|
18
|
+
1. Change the database driver to `mysql2`
|
19
|
+
2. Configure at least one authenticator
|
20
|
+
3. You might want to change `log.file` to something local, so that you don't need root. For example just `casserver.log`
|
21
|
+
4. You might also want to disable SSL for now by commenting out the `ssl_cert` line and changing the port to something like `8888`
|
22
|
+
5. Create the database (i.e. `mysqladmin -u root create casserver` or whatever you have in `config.yml`)
|
23
|
+
6. Modify the existing Gemfile by adding drivers for your database server. For example, if you configured `mysql2` in config.yml, add this to the Gemfile: `gem "mysql2"` and `gem "activerecord-mysql2-adapter"`
|
24
|
+
7. Run `bundle install`
|
25
|
+
8. `bundle exec rubycas-server -c config.yml`
|
26
|
+
|
27
|
+
Your RubyCAS-Server should now be running. Once you've confirmed that everything looks good, try switching to a [Passenger](http://www.modrails.com/) deployment. You should be able to point Apache (or whatever) to the `rubycas-server/public` directory, and everything should just work.
|
28
|
+
|
29
|
+
Some more info is available at the [RubyCAS-Server Wiki](http://code.google.com/p/rubycas-server/w/list).
|
30
|
+
|
31
|
+
If you have questions, try the [RubyCAS Google Group](https://groups.google.com/forum/?fromgroups#!forum/rubycas-server).
|
15
32
|
|
16
33
|
## License
|
17
34
|
|
18
35
|
RubyCAS-Server is licensed for use under the terms of the MIT License.
|
19
|
-
See the LICENSE file bundled with the official RubyCAS-Server distribution for details.
|
36
|
+
See the LICENSE file bundled with the official RubyCAS-Server distribution for details.
|
data/config.ru
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
|
3
|
-
# Assume all necessary gems are in place if bundler is not installed.
|
4
|
-
begin
|
5
|
-
require 'bundler/setup'
|
6
|
-
rescue LoadError => e
|
7
|
-
raise e unless e.message =~ /no such file to load -- bundler/
|
8
|
-
end
|
2
|
+
require 'bundler/setup'
|
9
3
|
|
10
4
|
$:.unshift "#{File.dirname(__FILE__)}/lib"
|
11
5
|
require "casserver"
|
@@ -78,24 +78,18 @@ class CASServer::Authenticators::SQL < CASServer::Authenticators::Base
|
|
78
78
|
def validate(credentials)
|
79
79
|
read_standard_credentials(credentials)
|
80
80
|
raise_if_not_configured
|
81
|
-
|
82
|
-
user_model = self.class.user_model
|
83
|
-
|
84
|
-
username_column = @options[:username_column] || 'username'
|
85
|
-
password_column = @options[:password_column] || 'password'
|
86
81
|
|
87
82
|
$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}"
|
88
|
-
results = user_model.find(:all, :conditions => ["#{username_column} = ? AND #{password_column} = ?", @username, @password])
|
89
83
|
user_model.connection_pool.checkin(user_model.connection)
|
90
84
|
|
91
|
-
if
|
92
|
-
$LOG.warn("#{self.class}: Multiple matches found for user #{@username.inspect}") if
|
85
|
+
if matching_users.size > 0
|
86
|
+
$LOG.warn("#{self.class}: Multiple matches found for user #{@username.inspect}") if matching_users.size > 1
|
93
87
|
|
94
88
|
unless @options[:extra_attributes].blank?
|
95
|
-
if
|
89
|
+
if matching_users.size > 1
|
96
90
|
$LOG.warn("#{self.class}: Unable to extract extra_attributes because multiple matches were found for #{@username.inspect}")
|
97
91
|
else
|
98
|
-
user =
|
92
|
+
user = matching_users.first
|
99
93
|
|
100
94
|
extract_extra(user)
|
101
95
|
log_extra
|
@@ -110,6 +104,18 @@ class CASServer::Authenticators::SQL < CASServer::Authenticators::Base
|
|
110
104
|
|
111
105
|
protected
|
112
106
|
|
107
|
+
def user_model
|
108
|
+
self.class.user_model
|
109
|
+
end
|
110
|
+
|
111
|
+
def username_column
|
112
|
+
@options[:username_column] || 'username'
|
113
|
+
end
|
114
|
+
|
115
|
+
def password_column
|
116
|
+
@options[:password_column] || 'password'
|
117
|
+
end
|
118
|
+
|
113
119
|
def raise_if_not_configured
|
114
120
|
raise CASServer::AuthenticatorError.new(
|
115
121
|
"Cannot validate credentials because the authenticator hasn't yet been configured"
|
@@ -130,4 +136,8 @@ class CASServer::Authenticators::SQL < CASServer::Authenticators::Base
|
|
130
136
|
$LOG.debug("#{self.class}: Read the following extra_attributes for user #{@username.inspect}: #{@extra_attributes.inspect}")
|
131
137
|
end
|
132
138
|
end
|
139
|
+
|
140
|
+
def matching_users
|
141
|
+
user_model.find(:all, :conditions => ["#{username_column} = ? AND #{password_column} = ?", @username, @password])
|
142
|
+
end
|
133
143
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'casserver/authenticators/sql'
|
2
|
+
|
3
|
+
require 'bcrypt'
|
4
|
+
|
5
|
+
# Essentially the same as the standard SQL authenticator but assumes that
|
6
|
+
# BCrypt has been used to encrypt the password. If you're using
|
7
|
+
# has_secure_password, then this is probably for you.
|
8
|
+
class CASServer::Authenticators::SQLBcrypt < CASServer::Authenticators::SQL
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def matching_users
|
13
|
+
results = user_model.find(:all, :conditions => ["#{username_column} = ?", @username])
|
14
|
+
results.select { |user| BCrypt::Password.new(user.send(password_column.to_sym)) == @password }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -5,8 +5,8 @@ module CASServer
|
|
5
5
|
def self.included(mod)
|
6
6
|
mod.module_eval do
|
7
7
|
register Sinatra::R18n
|
8
|
-
|
9
|
-
|
8
|
+
R18n::I18n.default = 'en'
|
9
|
+
R18n.default_places { File.expand_path(File.join(File.dirname(__FILE__),'..','..','locales')) }
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/rubycas-server.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
$gemspec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'rubycas-server'
|
3
|
-
s.version = '1.1.
|
3
|
+
s.version = '1.1.2'
|
4
4
|
s.authors = ["Matt Zukowski"]
|
5
5
|
s.email = ["matt@zukowski.ca"]
|
6
6
|
s.homepage = 'https://github.com/rubycas/rubycas-server'
|
@@ -32,7 +32,7 @@ For more information on RubyCAS-Server, see http://code.google.com/p/rubycas-ser
|
|
32
32
|
s.add_dependency("activerecord", ">= 2.3.12", "< 3.1")
|
33
33
|
s.add_dependency("activesupport", ">= 2.3.12", "< 3.1")
|
34
34
|
s.add_dependency("sinatra", "~> 1.0")
|
35
|
-
s.add_dependency("sinatra-r18n")
|
35
|
+
s.add_dependency("sinatra-r18n", '~> 1.1.0')
|
36
36
|
s.add_dependency("crypt-isaac", "~> 0.9.1")
|
37
37
|
|
38
38
|
s.add_development_dependency("rack-test")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubycas-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 2
|
10
|
+
version: 1.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Zukowski
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-09-19 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|
@@ -84,12 +84,14 @@ dependencies:
|
|
84
84
|
requirement: &id004 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
hash:
|
89
|
+
hash: 19
|
90
90
|
segments:
|
91
|
+
- 1
|
92
|
+
- 1
|
91
93
|
- 0
|
92
|
-
version:
|
94
|
+
version: 1.1.0
|
93
95
|
type: :runtime
|
94
96
|
version_requirements: *id004
|
95
97
|
- !ruby/object:Gem::Dependency
|
@@ -275,6 +277,7 @@ files:
|
|
275
277
|
- lib/casserver/authenticators/sql.rb
|
276
278
|
- lib/casserver/authenticators/sql_encrypted.rb
|
277
279
|
- lib/casserver/authenticators/sql_authlogic.rb
|
280
|
+
- lib/casserver/authenticators/sql_bcrypt.rb
|
278
281
|
- lib/casserver/authenticators/google.rb
|
279
282
|
- lib/casserver/authenticators/base.rb
|
280
283
|
- lib/casserver/authenticators/ntlm.rb
|