rubycas-server 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.txt +38 -0
- data/Manifest.txt +4 -11
- data/README.txt +1 -1
- data/Rakefile +2 -2
- data/bin/rubycas-server +16 -47
- data/bin/rubycas-server-ctl +13 -154
- data/config.example.yml +113 -64
- data/lib/casserver.rb +78 -80
- data/lib/casserver/authenticators/active_directory_ldap.rb +3 -0
- data/lib/casserver/authenticators/ldap.rb +14 -1
- data/lib/casserver/authenticators/sql_encrypted.rb +75 -0
- data/lib/casserver/controllers.rb +19 -8
- data/lib/casserver/environment.rb +23 -0
- data/lib/casserver/models.rb +104 -53
- data/lib/casserver/utils.rb +0 -24
- data/lib/casserver/version.rb +2 -2
- data/lib/casserver/views.rb +28 -0
- data/lib/rubycas-server.rb +1 -0
- metadata +77 -68
- data/vendor/camping-1.5.180/CHANGELOG +0 -99
- data/vendor/camping-1.5.180/COPYING +0 -18
- data/vendor/camping-1.5.180/README +0 -119
- data/vendor/camping-1.5.180/Rakefile +0 -117
- data/vendor/camping-1.5.180/lib/camping-unabridged.rb +0 -762
- data/vendor/camping-1.5.180/lib/camping.rb +0 -55
- data/vendor/camping-1.5.180/lib/camping/db.rb +0 -78
- data/vendor/camping-1.5.180/lib/camping/fastcgi.rb +0 -244
- data/vendor/camping-1.5.180/lib/camping/reloader.rb +0 -163
- data/vendor/camping-1.5.180/lib/camping/session.rb +0 -123
- data/vendor/camping-1.5.180/lib/camping/webrick.rb +0 -68
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,41 @@
|
|
1
|
+
=== 0.6.0 :: 2008-03-28
|
2
|
+
|
3
|
+
* Much of the supporting functionality that makes RubyCAS-Server
|
4
|
+
act as a well-behaved Linux service has been abstracted out
|
5
|
+
into its own library. This new library is called Picnic and is
|
6
|
+
now a gem dependency for RubyCAS-Server. You can find out more about
|
7
|
+
it at http://code.google.com/p/camping-picnic/.
|
8
|
+
* The logout action will now accept a 'destination' parameter in lieu of
|
9
|
+
'service'. This means that if a 'destination' parameter is given with
|
10
|
+
some URL, the logout action will show the login form, allowing the user
|
11
|
+
to immedietly log back in to the service specified by 'destination'.
|
12
|
+
* The logout action will now accept a 'url' parameter. If given, the logout
|
13
|
+
page will show a message indicating that the CAS session has been terminated
|
14
|
+
and instructing the user to click on a link to follow the given URL. If the
|
15
|
+
'url' parameter is given, the login form will NOT be shown on the logout
|
16
|
+
page (see above).
|
17
|
+
* When an authentication failure occurs (because the user submitted
|
18
|
+
invalid credentials or the login ticket is missing), the server
|
19
|
+
now returns a 401 (Unauthorized) response instead of 200.
|
20
|
+
* An encryption-enabled version of the SQL authenticator is now
|
21
|
+
available. For more info have a look at:
|
22
|
+
http://code.google.com/p/rubycas-server/wiki/UsingTheSQLEncryptedAuthenticator
|
23
|
+
* Better compatibility with Oracle databases. The database migration
|
24
|
+
no longer tries to create tables with long names when long
|
25
|
+
table names are not supported by the underlying database connector
|
26
|
+
(issue #15).
|
27
|
+
* The server now automatically removes leading and trailing whitespace from
|
28
|
+
the username entered by users. Passwords however are left intact, with no
|
29
|
+
whitespace removed.
|
30
|
+
* The server can now be configured to automatically downcase the
|
31
|
+
username entered by users (dowcase_username option). So if a user
|
32
|
+
enters "JSmith", the system will convert it to "jsmith" if the
|
33
|
+
downcase_username option is set to true.
|
34
|
+
* The server can now be made to bind to a specific address. See the
|
35
|
+
:bind_address option in the config.example.yml file.
|
36
|
+
* Fixed bug with ActiveRecord 2.0.2 where service tickets were not
|
37
|
+
being given a type (issue #37).
|
38
|
+
|
1
39
|
=== 0.5.1 :: 2007-12-20
|
2
40
|
|
3
41
|
* Tickets generated by the server should now be a lot more secure.
|
data/Manifest.txt
CHANGED
@@ -12,15 +12,18 @@ lib/casserver/authenticators/active_directory_ldap.rb
|
|
12
12
|
lib/casserver/authenticators/base.rb
|
13
13
|
lib/casserver/authenticators/ldap.rb
|
14
14
|
lib/casserver/authenticators/sql.rb
|
15
|
+
lib/casserver/authenticators/sql_encrypted.rb
|
15
16
|
lib/casserver/authenticators/test.rb
|
16
17
|
lib/casserver/cas.rb
|
17
18
|
lib/casserver/conf.rb
|
18
19
|
lib/casserver/controllers.rb
|
20
|
+
lib/casserver/environment.rb
|
19
21
|
lib/casserver/models.rb
|
20
22
|
lib/casserver/postambles.rb
|
21
23
|
lib/casserver/utils.rb
|
22
24
|
lib/casserver/version.rb
|
23
25
|
lib/casserver/views.rb
|
26
|
+
lib/rubycas-server.rb
|
24
27
|
lib/themes/cas.css
|
25
28
|
lib/themes/notice.png
|
26
29
|
lib/themes/ok.png
|
@@ -35,18 +38,8 @@ lib/themes/urbacon/theme.css
|
|
35
38
|
lib/themes/warning.png
|
36
39
|
resources/init.d.sh
|
37
40
|
setup.rb
|
41
|
+
test/test_cas.rb
|
38
42
|
test/test_casserver.rb
|
39
|
-
vendor/camping-1.5.180/CHANGELOG
|
40
|
-
vendor/camping-1.5.180/COPYING
|
41
|
-
vendor/camping-1.5.180/README
|
42
|
-
vendor/camping-1.5.180/Rakefile
|
43
|
-
vendor/camping-1.5.180/lib/camping-unabridged.rb
|
44
|
-
vendor/camping-1.5.180/lib/camping.rb
|
45
|
-
vendor/camping-1.5.180/lib/camping/db.rb
|
46
|
-
vendor/camping-1.5.180/lib/camping/fastcgi.rb
|
47
|
-
vendor/camping-1.5.180/lib/camping/reloader.rb
|
48
|
-
vendor/camping-1.5.180/lib/camping/session.rb
|
49
|
-
vendor/camping-1.5.180/lib/camping/webrick.rb
|
50
43
|
vendor/isaac_0.9.1/LICENSE
|
51
44
|
vendor/isaac_0.9.1/README
|
52
45
|
vendor/isaac_0.9.1/TODO
|
data/README.txt
CHANGED
data/Rakefile
CHANGED
@@ -19,9 +19,9 @@ RUBYFORGE_PROJECT = "rubycas-server" # The unix name for your project
|
|
19
19
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
20
20
|
|
21
21
|
DEPS = [
|
22
|
-
# ['camping', '>= 1.5'], # camping is now bundled with rubycas-server
|
23
22
|
['activesupport', '>= 1.4.0'],
|
24
|
-
['activerecord', '>=1.15.3']
|
23
|
+
['activerecord', '>=1.15.3'],
|
24
|
+
['picnic', '>=0.6.3']
|
25
25
|
]
|
26
26
|
|
27
27
|
|
data/bin/rubycas-server
CHANGED
@@ -1,56 +1,25 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# use local rubycas-server installation
|
8
|
-
$: << File.dirname(local_casserver)
|
9
|
-
path = File.dirname(local_casserver)+"/"
|
3
|
+
if File.exists?(picnic = File.expand_path(File.dirname(File.expand_path(__FILE__))+'/../vendor/picnic/lib'))
|
4
|
+
$: << picnic
|
5
|
+
elsif File.exists?(picnic = File.expand_path(File.dirname(File.expand_path(__FILE__))+'/../../picnic/lib'))
|
6
|
+
$: << picnic
|
10
7
|
else
|
11
|
-
# use gem installation
|
12
|
-
path = ""
|
13
8
|
require 'rubygems'
|
14
|
-
gem 'rubycas-server'
|
15
|
-
end
|
16
|
-
|
17
|
-
OptionParser.new do |opts|
|
18
|
-
opts.banner = "Usage: rubycas-server [options]"
|
19
|
-
|
20
|
-
opts.on("-c", "--config FILE", "Use config file (default is /etc/rubycas-server/config.yml)") do |c|
|
21
|
-
puts "Using config file #{c}"
|
22
|
-
$CONFIG_FILE = c
|
23
|
-
end
|
24
9
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
opts.on("-P", "--pid_file FILE", "Use pid file (default is /etc/rubycas-server/rubycas-server.pid)") do |c|
|
30
|
-
if $DAEMONIZE && !File.exists?(c)
|
31
|
-
puts "Using pid file '#{c}'"
|
32
|
-
$PID_FILE = c
|
33
|
-
elsif File.exists?(c)
|
34
|
-
puts "The pid file already exists. Is rubycas-server running?\n" +
|
35
|
-
"You will have to first manually remove the pid file at '#{c}' to start the server as a daemon."
|
36
|
-
exit 1
|
37
|
-
else
|
38
|
-
puts "Not running as Daemon. Ignoring pid option"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
opts.on_tail("-h", "--help", "Show this message") do
|
43
|
-
puts opts
|
44
|
-
exit
|
10
|
+
# make things backwards-compatible for rubygems < 0.9.0
|
11
|
+
unless Object.method_defined? :gem
|
12
|
+
alias gem require_gem
|
45
13
|
end
|
46
14
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
end.parse!
|
15
|
+
gem 'picnic'
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'picnic/cli'
|
53
19
|
|
54
|
-
|
20
|
+
cli = Picnic::Cli.new(
|
21
|
+
'rubycas-server',
|
22
|
+
:app_path => File.expand_path(File.dirname(File.expand_path(__FILE__)))
|
23
|
+
)
|
55
24
|
|
56
|
-
|
25
|
+
cli.handle_cli_input
|
data/bin/rubycas-server-ctl
CHANGED
@@ -1,163 +1,22 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def start
|
11
|
-
# use local rubycas-server bin if it exists and is executable -- makes debugging easier
|
12
|
-
bin = File.dirname(File.expand_path(__FILE__)) + "/rubycas-server"
|
13
|
-
|
14
|
-
if File.exists?(bin)
|
15
|
-
exec = "ruby #{bin}"
|
16
|
-
else
|
17
|
-
exec = "rubycas-server"
|
18
|
-
end
|
3
|
+
if File.exists?(picnic = File.expand_path(File.dirname(File.expand_path(__FILE__))+'/../vendor/picnic/lib'))
|
4
|
+
$: << picnic
|
5
|
+
elsif File.exists?(picnic = File.expand_path(File.dirname(File.expand_path(__FILE__))+'/../../picnic/lib'))
|
6
|
+
$: << picnic
|
7
|
+
else
|
8
|
+
require 'rubygems'
|
19
9
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
exit 1
|
24
|
-
when :not_running, :empty_pid
|
25
|
-
$stderr.puts "The pid file '#{@options[:pid_file]}' exists but rubycas-server is not running." +
|
26
|
-
" The pid file will be automatically deleted for you, but this shouldn't have happened!"
|
27
|
-
File.delete(@options[:pid_file])
|
28
|
-
when :dead
|
29
|
-
$stderr.puts "The pid file '#{@options[:pid_file]}' exists but rubycas-server is not running." +
|
30
|
-
" Please delete the pid file first."
|
31
|
-
exit 1
|
32
|
-
when :missing_pid
|
33
|
-
# we should be good to go (unless the server is already running without a pid file)
|
34
|
-
else
|
35
|
-
$stderr.puts "rubycas-server could not be started. Try looking in the log file for more info."
|
36
|
-
exit 1
|
10
|
+
# make things backwards-compatible for rubygems < 0.9.0
|
11
|
+
unless Object.method_defined? :gem
|
12
|
+
alias gem require_gem
|
37
13
|
end
|
38
|
-
|
39
|
-
cmd = "#{exec} -d -P #{@options[:pid_file]}"
|
40
|
-
cmd += " -c #{@options[:conf_file]}" if !@options[:conf_file].nil?
|
41
|
-
|
42
|
-
puts ">>> #{cmd}" if @options[:verbose]
|
43
|
-
|
44
|
-
output = `#{cmd}`
|
45
14
|
|
46
|
-
|
47
|
-
|
48
|
-
if s = get_state == :ok
|
49
|
-
exit 0
|
50
|
-
else
|
51
|
-
$stderr.puts "rubycas-server could not start properly! (#{s})\nTry running with the --verbose option for details."
|
52
|
-
case s
|
53
|
-
when :missing_pid
|
54
|
-
exit 4
|
55
|
-
when :not_running
|
56
|
-
exit 3
|
57
|
-
when :dead
|
58
|
-
exit 1
|
59
|
-
else
|
60
|
-
exit 4
|
61
|
-
end
|
62
|
-
end
|
15
|
+
gem 'picnic'
|
63
16
|
end
|
64
17
|
|
65
|
-
|
66
|
-
if File.exists? @options[:pid_file]
|
67
|
-
pid = open(@options[:pid_file]).read.to_i
|
68
|
-
begin
|
69
|
-
Process.kill("TERM", pid)
|
70
|
-
exit 0
|
71
|
-
rescue Errno::ESRCH
|
72
|
-
$stderr.puts "rubycas-server process '#{pid}' does not exist."
|
73
|
-
exit 1
|
74
|
-
end
|
75
|
-
else
|
76
|
-
$stderr.puts "#{@options[:pid_file]} not found. Is rubycas-server running?"
|
77
|
-
exit 4
|
78
|
-
end
|
79
|
-
end
|
18
|
+
require 'picnic/service_control'
|
80
19
|
|
81
|
-
|
82
|
-
case get_state
|
83
|
-
when :ok
|
84
|
-
puts "rubycas-server appears to be up and running."
|
85
|
-
exit 0
|
86
|
-
when :missing_pid
|
87
|
-
$stderr.puts "rubycas-server does not appear to be running (pid file not found)."
|
88
|
-
exit 3
|
89
|
-
when :empty_pid
|
90
|
-
$stderr.puts "rubycas-server does not appear to be running (pid file exists but is empty)."
|
91
|
-
when :not_running
|
92
|
-
$stderr.puts "rubycas-server is not running."
|
93
|
-
exit 1
|
94
|
-
when :dead
|
95
|
-
$stderr.puts "rubycas-server is dead or unresponsive."
|
96
|
-
exit 102
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def get_state
|
101
|
-
if File.exists? @options[:pid_file]
|
102
|
-
pid = File.read(@options[:pid_file]).strip
|
103
|
-
|
104
|
-
return :empty_pid unless pid and !pid.empty? # pid file exists but is empty
|
105
|
-
|
106
|
-
state = `ps -p #{pid} -o state=`.strip
|
107
|
-
if state == ''
|
108
|
-
return :not_running
|
109
|
-
elsif state == 'R' || state == 'S'
|
110
|
-
return :ok
|
111
|
-
else
|
112
|
-
return :dead
|
113
|
-
end
|
114
|
-
else
|
115
|
-
# TODO: scan through the process table to see if server is running without pid file
|
116
|
-
return :missing_pid
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
OptionParser.new do |opts|
|
121
|
-
opts.banner = "Usage: #{$0} (start|stop|restart) [options]"
|
122
|
-
opts.banner += "\nruby-server-ctl is only usable when using webrick or mongrel"
|
123
|
-
|
124
|
-
opts.on("-c", "--config FILE", "Path to rubycas-server configuration file") { |value| @options[:conf_file] = value }
|
125
|
-
opts.on("-P", "--pid_file FILE", "Path to rubycas-server pid file") { |value| @options[:pid_file] = value }
|
126
|
-
opts.on('-v', '--verbose', "Print all called commands and output.") { |value| @options[:verbose] = value }
|
127
|
-
|
128
|
-
if ARGV.empty?
|
129
|
-
puts opts
|
130
|
-
exit
|
131
|
-
else
|
132
|
-
@cmd = opts.parse!(ARGV)
|
133
|
-
if @cmd.nil?
|
134
|
-
puts opts
|
135
|
-
exit
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
if !@options[:conf_file].nil? && !File.exists?(@options[:conf_file])
|
141
|
-
puts "Invalid path to rubycas-server configuration file: #{@options[:conf_file]}"
|
142
|
-
exit
|
143
|
-
end
|
144
|
-
|
145
|
-
case @cmd[0]
|
146
|
-
when "start":
|
147
|
-
puts "Starting rubycas-server..."
|
148
|
-
start
|
149
|
-
when "stop":
|
150
|
-
puts "Stopping rubycas-server..."
|
151
|
-
stop
|
152
|
-
when "restart":
|
153
|
-
puts "Restarting rubycas-server..."
|
154
|
-
stop
|
155
|
-
start
|
156
|
-
when "status":
|
157
|
-
puts "Checking status of rubycas-server..."
|
158
|
-
status
|
159
|
-
else
|
160
|
-
puts "Invalid command. Usage: rubycas-server-ctl [-cPv] start|stop|restart|status"
|
161
|
-
end
|
20
|
+
ctl = Picnic::ServiceControl.new('rubycas-server')
|
162
21
|
|
163
|
-
|
22
|
+
ctl.handle_cli_input
|
data/config.example.yml
CHANGED
@@ -1,39 +1,62 @@
|
|
1
1
|
# IMPORTANT NOTE ABOUT YAML CONFIGURATION FILES
|
2
|
-
# ---> Be sure to use spaces instead of tabs for indentation.
|
2
|
+
# ---> Be sure to use spaces instead of tabs for indentation. YAML is
|
3
|
+
# white-space sensitive!
|
3
4
|
|
4
|
-
##### SERVER
|
5
|
+
##### SERVER ###################################################################
|
5
6
|
|
6
7
|
# Under what environment are you running the CAS server? The following methods
|
7
8
|
# are currently supported:
|
8
9
|
#
|
9
10
|
# webrick -- run as a stand-alone webrick server; this is the default method
|
10
|
-
# mongrel -- run as a stand-alone mongrel server; fast, but you'll need to
|
11
|
-
# mongrel and run it behind an https reverse proxy like Pound
|
12
|
-
#
|
13
|
-
#
|
11
|
+
# mongrel -- run as a stand-alone mongrel server; fast, but you'll need to
|
12
|
+
# install mongrel and run it behind an https reverse proxy like Pound
|
13
|
+
# or Apache 2.2's mod_proxy)
|
14
|
+
# cgi -- slow, but simple to set up if you're already familliar with
|
15
|
+
# deploying CGI scripts
|
16
|
+
# fastcgi -- see http://www.fastcgi.com (e.g. under Apache you can use this with
|
17
|
+
# mod_fastcgi)
|
14
18
|
#
|
15
19
|
# The cgi and fastcgi methods have not been thoroughly tested!
|
16
20
|
# Please report any problems to the authors.
|
17
21
|
#
|
18
|
-
# IMPORTANT: If you use mongrel, you will need to run the server behind a
|
19
|
-
# (Pound, Apache 2.2 with mod_proxy, etc.) since
|
20
|
-
# See the RubyCAS-Server install
|
21
|
-
#
|
22
|
-
# this by running `gem install camping --source code.whytheluckystiff.net`
|
22
|
+
# IMPORTANT: If you use mongrel, you will need to run the server behind a
|
23
|
+
# reverse proxy (Pound, Apache 2.2 with mod_proxy, etc.) since
|
24
|
+
# mongrel does not support SSL/HTTPS. See the RubyCAS-Server install
|
25
|
+
# docs for more info.
|
23
26
|
|
24
27
|
### webrick example
|
25
28
|
|
26
29
|
server: webrick
|
27
30
|
port: 443
|
28
31
|
ssl_cert: /path/to/your/ssl.pem
|
29
|
-
# ssl_key: /path/to/your/private_key.pem <-- if private key is separate from cert
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
+
# If private key is separate from cert
|
34
|
+
#ssl_key: /path/to/your/private_key.pem
|
35
|
+
|
36
|
+
# By default the login page will be available at the root path
|
37
|
+
# (e.g. https://example.foo/). The uri_path option lets you serve it from a
|
38
|
+
# different path (e.g. https://example.foo/cas).
|
39
|
+
#uri_path: /cas
|
40
|
+
|
41
|
+
# Bind the server to a specific address. Use 0.0.0.0 to listen on all
|
42
|
+
# available interfaces.
|
43
|
+
#bind_address: 0.0.0.0
|
44
|
+
|
45
|
+
### mongrel example (since mongrel doesn't support SSL on its own, you will have
|
46
|
+
### to run this behind an https reverse proxy)
|
33
47
|
|
34
48
|
#server: mongrel
|
35
49
|
#port: 110011
|
36
50
|
|
51
|
+
# By default the login page will be available at the root path
|
52
|
+
# (e.g. https://example.foo/). The uri_path option lets you serve it from a
|
53
|
+
# different path (e.g. https://example.foo/cas).
|
54
|
+
#uri_path: /cas
|
55
|
+
|
56
|
+
# Bind the server to a specific address. Use 0.0.0.0 to listen on all
|
57
|
+
# available interfaces.
|
58
|
+
#bind_address: 0.0.0.0
|
59
|
+
|
37
60
|
### cgi example (you'll need to serve this via an SSL-capable server like Apache)
|
38
61
|
|
39
62
|
#server: cgi
|
@@ -43,11 +66,12 @@ ssl_cert: /path/to/your/ssl.pem
|
|
43
66
|
#server: fastcgi
|
44
67
|
|
45
68
|
|
46
|
-
##### DATABASE
|
69
|
+
##### DATABASE #################################################################
|
47
70
|
|
48
71
|
# Set up the database connection. Make sure that this database is secure!
|
49
72
|
#
|
50
|
-
# By default, we use MySQL, since it is widely used and does not require any
|
73
|
+
# By default, we use MySQL, since it is widely used and does not require any
|
74
|
+
# additional
|
51
75
|
# ruby libraries besides ActiveRecord.
|
52
76
|
#
|
53
77
|
# With MySQL, your config would be something like the following:
|
@@ -62,34 +86,39 @@ database:
|
|
62
86
|
host: localhost
|
63
87
|
|
64
88
|
#
|
65
|
-
# Instead of MySQL you can use SQLite3, PostgreSQL, MSSQL, or anything else
|
66
|
-
# by ActiveRecord.
|
89
|
+
# Instead of MySQL you can use SQLite3, PostgreSQL, MSSQL, or anything else
|
90
|
+
# supported by ActiveRecord.
|
67
91
|
#
|
68
|
-
# With SQLite3 (which does not require a separate database server), your
|
69
|
-
# would look something like the following (don't forget to install
|
70
|
-
# sqlite3-ruby gem beforehand!):
|
92
|
+
# With SQLite3 (which does not require a separate database server), your
|
93
|
+
# configuration would look something like the following (don't forget to install
|
94
|
+
# the sqlite3-ruby gem beforehand!):
|
71
95
|
#
|
72
96
|
#database:
|
73
97
|
# adapter: sqlite3
|
74
98
|
# dbfile: /var/lib/casserver.db
|
75
99
|
|
76
100
|
|
77
|
-
##### AUTHENTICATION
|
101
|
+
##### AUTHENTICATION ###########################################################
|
78
102
|
|
79
103
|
# Configure how username/passwords are validated.
|
80
104
|
#
|
81
|
-
# !!! YOU MUST CONFIGURE ONE
|
105
|
+
# !!! YOU MUST CONFIGURE ONE OF THESE AUTHENTICATION METHODS !!!
|
82
106
|
#
|
83
107
|
# Currently there are three built-in methods for authentication:
|
84
|
-
# SQL, ActiveDirectory, and LDAP. If none of these work for you, it is
|
85
|
-
# easy to write your own custom Authenticator class.
|
108
|
+
# SQL, ActiveDirectory, and LDAP. If none of these work for you, it is
|
109
|
+
# relatively easy to write your own custom Authenticator class.
|
110
|
+
#
|
111
|
+
# === SQL Authentication =======================================================
|
86
112
|
#
|
87
|
-
# ==> SQL Authentication:
|
88
113
|
# The simplest method is to validate against a SQL database. This assumes
|
89
114
|
# that all of your users are stored in a table that has a 'username' column
|
90
115
|
# and a 'password' column. When the user logs in, CAS conects to this database
|
91
|
-
# and
|
116
|
+
# and looks for a matching username/password in the users table. If a matching
|
92
117
|
# username and password is found, authentication is successful.
|
118
|
+
#
|
119
|
+
# If you prefer to have your passwords stored in an encrypted form, have a
|
120
|
+
# look at the SQLEncrypted authenticator:
|
121
|
+
# http://code.google.com/p/rubycas-server/wiki/UsingTheSQLEncryptedAuthenticator
|
93
122
|
#
|
94
123
|
# Example:
|
95
124
|
#
|
@@ -101,12 +130,13 @@ database:
|
|
101
130
|
# username: root
|
102
131
|
# password:
|
103
132
|
# server: localhost
|
104
|
-
# user_table:
|
133
|
+
# user_table: users
|
105
134
|
# username_column: username
|
106
135
|
# password_column: password
|
107
136
|
#
|
108
137
|
#
|
109
|
-
#
|
138
|
+
# === ActiveDirectory Authentication ===========================================
|
139
|
+
#
|
110
140
|
# This method authenticates against Microsoft's Active Directory using LDAP.
|
111
141
|
# You must enter your ActiveDirectory server, and base DN. The port number
|
112
142
|
# and LDAP filter are optional. You must also enter a CN and password
|
@@ -137,12 +167,13 @@ database:
|
|
137
167
|
# omit the auth_user and auth_password values in the above example.
|
138
168
|
#
|
139
169
|
#
|
140
|
-
#
|
170
|
+
# === LDAP Authentication ======================================================
|
171
|
+
#
|
141
172
|
# This is a more general version of the ActiveDirectory authenticator.
|
142
173
|
# The configuration is similar, except you don't need an authenticator
|
143
174
|
# username or password. Note that this authenticator hasn't been widely
|
144
175
|
# tested, so it is not guaranteed to work.
|
145
|
-
|
176
|
+
#=====
|
146
177
|
#authenticator:
|
147
178
|
# class: CASServer::Authenticators::ActiveDirectoryLDAP
|
148
179
|
# ldap:
|
@@ -152,19 +183,21 @@ database:
|
|
152
183
|
# filter: (objectClass=person)
|
153
184
|
#
|
154
185
|
#
|
155
|
-
#
|
186
|
+
# === Custom Authentication ====================================================
|
187
|
+
#
|
156
188
|
# It should be relatively easy to write your own Authenticator class. Have a look
|
157
189
|
# at the built-in authenticators in the casserver/authenticators directory. Your
|
158
190
|
# authenticator should extend the CASServer::Authenticators::Base class and must
|
159
|
-
# implement a validate() method that takes a single hash argument. When the user
|
160
|
-
# the login form, the username and password they entered is passed to
|
161
|
-
# as a hash under :username and :password keys. In the future, this
|
162
|
-
# might also contain other data such as the domain that the user is logging
|
191
|
+
# implement a validate() method that takes a single hash argument. When the user
|
192
|
+
# submits the login form, the username and password they entered is passed to
|
193
|
+
# validate() as a hash under :username and :password keys. In the future, this
|
194
|
+
# hash might also contain other data such as the domain that the user is logging
|
195
|
+
# in to.
|
163
196
|
#
|
164
|
-
# To use your custom authenticator, specify it's class name and path to the
|
165
|
-
# in the authenticator section of the config. Any other parameters
|
166
|
-
# authenticator configuration will be passed on to the
|
167
|
-
# the validate() method as an @options hash.
|
197
|
+
# To use your custom authenticator, specify it's class name and path to the
|
198
|
+
# source file in the authenticator section of the config. Any other parameters
|
199
|
+
# you specify in the authenticator configuration will be passed on to the
|
200
|
+
# authenticator and made availabe in the validate() method as an @options hash.
|
168
201
|
#
|
169
202
|
# Example:
|
170
203
|
#
|
@@ -174,10 +207,11 @@ database:
|
|
174
207
|
# option_a: foo
|
175
208
|
# another_option: yeeha
|
176
209
|
#
|
177
|
-
#
|
178
|
-
#
|
179
|
-
#
|
180
|
-
#
|
210
|
+
# === Multiple Authenticators ==================================================
|
211
|
+
#
|
212
|
+
# If you need to have more than one source for authentication, such as an LDAP
|
213
|
+
# directory and a database, you can use multiple authenticators by making
|
214
|
+
# :authenticator an array of authenticators.
|
181
215
|
#
|
182
216
|
#authenticator:
|
183
217
|
# -
|
@@ -203,15 +237,17 @@ database:
|
|
203
237
|
# authenticator and on failure fall through to the second authenticator.
|
204
238
|
#
|
205
239
|
|
206
|
-
|
240
|
+
|
241
|
+
##### LOOK & FEEL ##############################################################
|
207
242
|
|
208
243
|
# Set the path to the theme directory that determines how your CAS pages look.
|
209
244
|
#
|
210
|
-
# Custom themes are not well supported yet, but will be in the near future. In
|
211
|
-
# meantime, if you want to create a custom theme, you can create a
|
212
|
-
# under the CASServer's themes dir (for example,
|
213
|
-
# if you installed CASServer
|
214
|
-
#
|
245
|
+
# Custom themes are not well supported yet, but will be in the near future. In
|
246
|
+
# the meantime, if you want to create a custom theme, you can create a
|
247
|
+
# subdirectory under the CASServer's themes dir (for example,
|
248
|
+
# '/usr/lib/ruby/1.8/gems/casserver-xxx/lib/themes', if you installed CASServer
|
249
|
+
# on Linux as a gem). A theme is basically just a theme.css file that overrides
|
250
|
+
# the themes/cas.css styles along with a collection of image files
|
215
251
|
# like logo.png and bg.png.
|
216
252
|
#
|
217
253
|
# By default, we use the 'simple' theme which you can find in themes/simple.
|
@@ -220,15 +256,18 @@ theme: simple
|
|
220
256
|
# The name of your company/organization. This will show up on the login page.
|
221
257
|
organization: CAS
|
222
258
|
|
223
|
-
# A short bit of text that shows up on the login page. You can make this blank
|
259
|
+
# A short bit of text that shows up on the login page. You can make this blank
|
260
|
+
# if you prefer to have no extra text shown at the bottom of the login box.
|
224
261
|
infoline: Powered by <a href="http://code.google.com/p/rubycas-server/">RubyCAS-Server</a>
|
225
262
|
|
226
263
|
# Custom views file. Overrides methodes in lib/casserver/views.rb
|
227
264
|
#custom_views_file: /path/to/custom/views.rb
|
228
265
|
|
229
|
-
##### LOGGING #########################################################################
|
230
266
|
|
231
|
-
|
267
|
+
##### LOGGING ##################################################################
|
268
|
+
|
269
|
+
# Configure general logging. This log is where you'll want to look in case of
|
270
|
+
# problems.
|
232
271
|
#
|
233
272
|
# You may want to change the file to something like /var/log/casserver.log
|
234
273
|
# Set the level to DEBUG if you want more detailed logging.
|
@@ -239,31 +278,41 @@ log:
|
|
239
278
|
|
240
279
|
|
241
280
|
# If you want full database logging, uncomment this next section.
|
242
|
-
# Every SQL query will be logged here. This is useful for debugging database
|
281
|
+
# Every SQL query will be logged here. This is useful for debugging database
|
282
|
+
# problems.
|
243
283
|
#
|
244
284
|
#db_log:
|
245
285
|
# file: /var/log/casserver_db.log
|
246
286
|
|
247
287
|
|
248
|
-
##### OTHER
|
288
|
+
##### OTHER ####################################################################
|
249
289
|
|
250
290
|
# You can set various ticket expiry times (specify the value in seconds).
|
251
291
|
|
252
|
-
# Expired login and service tickets are no longer usable this many seconds after
|
253
|
-
# are created. (Defaults to 5 minutes)
|
292
|
+
# Expired login and service tickets are no longer usable this many seconds after
|
293
|
+
# they are created. (Defaults to 5 minutes)
|
254
294
|
|
255
295
|
#login_ticket_expiry: 300
|
256
296
|
#service_ticket_expiry: 300
|
257
297
|
|
258
|
-
# Proxy- and ticket-granting tickets do not expire -- normally they are made
|
259
|
-
# when the user logs out. But the server must periodically delete
|
260
|
-
# stale data. PGTs and TGTs will be deleted during
|
261
|
-
# seconds old. (Defaults to 48 hours)
|
298
|
+
# Proxy- and ticket-granting tickets do not expire -- normally they are made
|
299
|
+
# invalid only when the user logs out. But the server must periodically delete
|
300
|
+
# them to prevent buildup of stale data. PGTs and TGTs will be deleted during
|
301
|
+
# server startup if they are this many seconds old. (Defaults to 48 hours)
|
262
302
|
|
263
303
|
#proxy_granting_ticket_expiry: 172800
|
264
304
|
#ticket_granting_ticket_expiry: 172800
|
265
305
|
|
266
|
-
# If you would prefer that ticket-granting ticket expiry be enforced (in effect
|
267
|
-
# the maximum length of a session), you can set expire_sessions to true.
|
306
|
+
# If you would prefer that ticket-granting ticket expiry be enforced (in effect
|
307
|
+
# limiting the maximum length of a session), you can set expire_sessions to true.
|
308
|
+
|
309
|
+
#expire_sessions: false
|
310
|
+
|
311
|
+
|
312
|
+
# If you want the usernames entered on the login page to be automatically
|
313
|
+
# downcased (converted to lowercase), enable the following option. When this
|
314
|
+
# option is set to true, if the user enters "JSmith" as their username, the
|
315
|
+
# system will automatically
|
316
|
+
# convert this to "jsmith".
|
268
317
|
|
269
|
-
#
|
318
|
+
#downcase_username: true
|