synapses-cas 0.1.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.
Files changed (81) hide show
  1. data/CHANGELOG +3 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE +27 -0
  4. data/README.md +20 -0
  5. data/Rakefile +2 -0
  6. data/bin/synapses-cas +30 -0
  7. data/config.ru +17 -0
  8. data/config/config.example.yml +592 -0
  9. data/config/unicorn.rb +88 -0
  10. data/db/migrate/001_create_initial_structure.rb +47 -0
  11. data/lib/casserver.rb +11 -0
  12. data/lib/casserver/authenticators/active_directory_ldap.rb +19 -0
  13. data/lib/casserver/authenticators/active_resource.rb +127 -0
  14. data/lib/casserver/authenticators/authlogic_crypto_providers/aes256.rb +43 -0
  15. data/lib/casserver/authenticators/authlogic_crypto_providers/bcrypt.rb +92 -0
  16. data/lib/casserver/authenticators/authlogic_crypto_providers/md5.rb +34 -0
  17. data/lib/casserver/authenticators/authlogic_crypto_providers/sha1.rb +59 -0
  18. data/lib/casserver/authenticators/authlogic_crypto_providers/sha512.rb +50 -0
  19. data/lib/casserver/authenticators/base.rb +67 -0
  20. data/lib/casserver/authenticators/client_certificate.rb +47 -0
  21. data/lib/casserver/authenticators/google.rb +58 -0
  22. data/lib/casserver/authenticators/ldap.rb +147 -0
  23. data/lib/casserver/authenticators/ntlm.rb +88 -0
  24. data/lib/casserver/authenticators/open_id.rb +22 -0
  25. data/lib/casserver/authenticators/sql.rb +133 -0
  26. data/lib/casserver/authenticators/sql_authlogic.rb +93 -0
  27. data/lib/casserver/authenticators/sql_encrypted.rb +75 -0
  28. data/lib/casserver/authenticators/sql_md5.rb +19 -0
  29. data/lib/casserver/authenticators/sql_rest_auth.rb +82 -0
  30. data/lib/casserver/authenticators/test.rb +22 -0
  31. data/lib/casserver/cas.rb +323 -0
  32. data/lib/casserver/localization.rb +13 -0
  33. data/lib/casserver/model.rb +270 -0
  34. data/lib/casserver/server.rb +758 -0
  35. data/lib/casserver/utils.rb +32 -0
  36. data/lib/casserver/views/_login_form.erb +42 -0
  37. data/lib/casserver/views/layout.erb +18 -0
  38. data/lib/casserver/views/login.erb +30 -0
  39. data/lib/casserver/views/proxy.builder +12 -0
  40. data/lib/casserver/views/proxy_validate.builder +25 -0
  41. data/lib/casserver/views/service_validate.builder +18 -0
  42. data/lib/casserver/views/validate.erb +2 -0
  43. data/locales/de.yml +27 -0
  44. data/locales/en.yml +26 -0
  45. data/locales/es.yml +26 -0
  46. data/locales/es_ar.yml +26 -0
  47. data/locales/fr.yml +26 -0
  48. data/locales/jp.yml +26 -0
  49. data/locales/pl.yml +26 -0
  50. data/locales/pt.yml +26 -0
  51. data/locales/ru.yml +26 -0
  52. data/locales/zh.yml +26 -0
  53. data/locales/zh_tw.yml +26 -0
  54. data/public/themes/cas.css +126 -0
  55. data/public/themes/notice.png +0 -0
  56. data/public/themes/ok.png +0 -0
  57. data/public/themes/simple/bg.png +0 -0
  58. data/public/themes/simple/favicon.png +0 -0
  59. data/public/themes/simple/login_box_bg.png +0 -0
  60. data/public/themes/simple/logo.png +0 -0
  61. data/public/themes/simple/theme.css +28 -0
  62. data/public/themes/urbacon/bg.png +0 -0
  63. data/public/themes/urbacon/login_box_bg.png +0 -0
  64. data/public/themes/urbacon/logo.png +0 -0
  65. data/public/themes/urbacon/theme.css +33 -0
  66. data/public/themes/warning.png +0 -0
  67. data/resources/init.d.sh +58 -0
  68. data/setup.rb +1585 -0
  69. data/spec/alt_config.yml +50 -0
  70. data/spec/authenticators/active_resource_spec.rb +109 -0
  71. data/spec/authenticators/ldap_spec.rb +53 -0
  72. data/spec/casserver_spec.rb +156 -0
  73. data/spec/default_config.yml +50 -0
  74. data/spec/model_spec.rb +42 -0
  75. data/spec/spec.opts +4 -0
  76. data/spec/spec_helper.rb +89 -0
  77. data/spec/utils_spec.rb +53 -0
  78. data/tasks/bundler.rake +4 -0
  79. data/tasks/db/migrate.rake +12 -0
  80. data/tasks/spec.rake +10 -0
  81. metadata +380 -0
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format nested
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,89 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'rack/test'
4
+ require 'rspec'
5
+ #require 'spec/autorun'
6
+ #require 'spec/interop/test'
7
+ require 'logger'
8
+ require 'ostruct'
9
+
10
+ require 'capybara'
11
+ require 'capybara/dsl'
12
+
13
+ # set test environment
14
+ set :environment, :test
15
+ set :run, false
16
+ set :raise_errors, true
17
+ set :logging, false
18
+
19
+
20
+ if Dir.getwd =~ /\/spec$/
21
+ # Avoid potential weirdness by changing the working directory to the CASServer root
22
+ FileUtils.cd('..')
23
+ end
24
+
25
+ def silence_warnings
26
+ old_verbose, $VERBOSE = $VERBOSE, nil
27
+ yield
28
+ ensure
29
+ $VERBOSE = old_verbose
30
+ end
31
+
32
+ # Ugly monkeypatch to allow us to test for correct redirection to
33
+ # external services.
34
+ #
35
+ # This will likely break in the future when Capybara or RackTest are upgraded.
36
+ class Capybara::RackTest::Browser
37
+ def current_url
38
+ if @redirected_to_external_url
39
+ @redirected_to_external_url
40
+ else
41
+ request.url rescue ""
42
+ end
43
+ end
44
+
45
+ def follow_redirects!
46
+ if last_response.redirect? && last_response['Location'] =~ /^http[s]?:/
47
+ puts "FOLLOWING REDIECT: #{last_response['Location']}"
48
+ @redirected_to_external_url = last_response['Location']
49
+ else
50
+ 5.times do
51
+ follow_redirect! if last_response.redirect?
52
+ end
53
+ raise Capybara::InfiniteRedirectError, "redirected more than 5 times, check for infinite redirects." if last_response.redirect?
54
+ end
55
+ end
56
+ end
57
+
58
+ # This called in specs' `before` block.
59
+ # Due to the way Sinatra applications are loaded,
60
+ # we're forced to delay loading of the server code
61
+ # until the start of each test so that certain
62
+ # configuraiton options can be changed (e.g. `uri_path`)
63
+ def load_server(config_file)
64
+ ENV['CONFIG_FILE'] = config_file
65
+
66
+ silence_warnings do
67
+ load File.dirname(__FILE__) + '/../lib/casserver/server.rb'
68
+ end
69
+
70
+ CASServer::Server.enable(:raise_errors)
71
+ CASServer::Server.disable(:show_exceptions)
72
+
73
+ #Capybara.current_driver = :selenium
74
+ Capybara.app = CASServer::Server
75
+ end
76
+
77
+ # Deletes the sqlite3 database specified in the app's config
78
+ # and runs the db:migrate rake tasks to rebuild the database schema.
79
+ def reset_spec_database
80
+ raise "Cannot reset the spec database because config[:database][:database] is not defined." unless
81
+ CASServer::Server.config[:database] && CASServer::Server.config[:database][:database]
82
+
83
+ FileUtils.rm_f(CASServer::Server.config[:database][:database])
84
+
85
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
86
+ ActiveRecord::Base.logger.level = Logger::ERROR
87
+ ActiveRecord::Migration.verbose = false
88
+ ActiveRecord::Migrator.migrate("db/migrate")
89
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: UTF-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ module CASServer
5
+ end
6
+ require 'casserver/utils'
7
+
8
+ describe CASServer::Utils, '#random_string(max_length = 29)' do
9
+ before do
10
+ load_server(File.dirname(__FILE__) + "/default_config.yml")
11
+ reset_spec_database
12
+ end
13
+
14
+ context 'when max length is not passed in' do
15
+ it 'should return a random string of length 29' do
16
+ subject.random_string.length.should == 29
17
+ end
18
+ end
19
+
20
+ context 'when max length is passed in' do
21
+ it 'should return a random string of the desired length' do
22
+ subject.random_string(30).length.should == 30
23
+ end
24
+ end
25
+
26
+ it 'should include the letter r in the random string' do
27
+ subject.random_string.should include 'r'
28
+ end
29
+
30
+ it 'should return a random string' do
31
+ random_string = subject.random_string
32
+ another_random_string = subject.random_string
33
+ random_string.should_not == another_random_string
34
+ end
35
+ end
36
+
37
+ describe CASServer::Utils, '#log_controller_action(controller, params)' do
38
+ let(:params) { {} }
39
+ let(:params_with_password) { { 'password' => 'test' } }
40
+ let(:params_with_password_filtered) { { 'password' => '******' } }
41
+
42
+ it 'should log the controller action' do
43
+ $LOG.should_receive(:debug).with 'Processing application::instance_eval {}'
44
+
45
+ subject.log_controller_action('application', params)
46
+ end
47
+
48
+ it 'should filter password parameters in the log' do
49
+ $LOG.should_receive(:debug).with "Processing application::instance_eval #{params_with_password_filtered.inspect}"
50
+
51
+ subject.log_controller_action('application', params_with_password)
52
+ end
53
+ end
@@ -0,0 +1,4 @@
1
+ require 'bundler'
2
+ namespace :bundler do
3
+ Bundler::GemHelper.install_tasks(:name => 'rubycas-server')
4
+ end
@@ -0,0 +1,12 @@
1
+ namespace :db do
2
+ desc "bring your CAS server database schema up to date (options CONFIG=/path/to/config.yml)"
3
+ task :migrate do |t|
4
+ $:.unshift File.dirname(__FILE__) + "/../../lib"
5
+
6
+ require 'casserver/server'
7
+
8
+ CASServer::Model::Base.logger = Logger.new(STDOUT)
9
+ ActiveRecord::Migration.verbose = true
10
+ ActiveRecord::Migrator.migrate("db/migrate")
11
+ end
12
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,10 @@
1
+ begin
2
+ require 'rspec/core/rake_task'
3
+ desc 'Run RSpecs to confirm that all functionality is working as expected'
4
+ RSpec::Core::RakeTask.new('spec') do |t|
5
+ t.rspec_opts = ['--colour', '--format nested']
6
+ t.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+ rescue LoadError
9
+ puts "Hiding spec tasks because RSpec is not available"
10
+ end
metadata ADDED
@@ -0,0 +1,380 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: synapses-cas
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Synapses Group
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.3.12
22
+ - - <
23
+ - !ruby/object:Gem::Version
24
+ version: '3.1'
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.12
33
+ - - <
34
+ - !ruby/object:Gem::Version
35
+ version: '3.1'
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 2.3.12
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.3.12
55
+ - - <
56
+ - !ruby/object:Gem::Version
57
+ version: '3.1'
58
+ - !ruby/object:Gem::Dependency
59
+ name: sinatra
60
+ requirement: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: '1.0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '1.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: sinatra-r18n
76
+ requirement: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: crypt-isaac
92
+ requirement: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 0.9.1
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ version: 0.9.1
106
+ - !ruby/object:Gem::Dependency
107
+ name: rack-test
108
+ requirement: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ - !ruby/object:Gem::Dependency
123
+ name: capybara
124
+ requirement: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - '='
128
+ - !ruby/object:Gem::Version
129
+ version: 1.1.2
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - '='
136
+ - !ruby/object:Gem::Version
137
+ version: 1.1.2
138
+ - !ruby/object:Gem::Dependency
139
+ name: rspec
140
+ requirement: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rspec-core
156
+ requirement: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ! '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ none: false
166
+ requirements:
167
+ - - ! '>='
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ - !ruby/object:Gem::Dependency
171
+ name: rake
172
+ requirement: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - '='
176
+ - !ruby/object:Gem::Version
177
+ version: 0.8.7
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - '='
184
+ - !ruby/object:Gem::Version
185
+ version: 0.8.7
186
+ - !ruby/object:Gem::Dependency
187
+ name: sqlite3
188
+ requirement: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ~>
192
+ - !ruby/object:Gem::Version
193
+ version: 1.3.1
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ~>
200
+ - !ruby/object:Gem::Version
201
+ version: 1.3.1
202
+ - !ruby/object:Gem::Dependency
203
+ name: net-ldap
204
+ requirement: !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: 0.1.1
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ~>
216
+ - !ruby/object:Gem::Version
217
+ version: 0.1.1
218
+ - !ruby/object:Gem::Dependency
219
+ name: activeresource
220
+ requirement: !ruby/object:Gem::Requirement
221
+ none: false
222
+ requirements:
223
+ - - ! '>='
224
+ - !ruby/object:Gem::Version
225
+ version: 2.3.12
226
+ - - <
227
+ - !ruby/object:Gem::Version
228
+ version: '3.1'
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ none: false
233
+ requirements:
234
+ - - ! '>='
235
+ - !ruby/object:Gem::Version
236
+ version: 2.3.12
237
+ - - <
238
+ - !ruby/object:Gem::Version
239
+ version: '3.1'
240
+ description: Provides single sign-on authentication for web applications using the
241
+ CAS protocol.
242
+ email:
243
+ - tiago@synapses.com.br
244
+ executables:
245
+ - synapses-cas
246
+ extensions: []
247
+ extra_rdoc_files:
248
+ - CHANGELOG
249
+ - LICENSE
250
+ - README.md
251
+ files:
252
+ - CHANGELOG
253
+ - LICENSE
254
+ - README.md
255
+ - Rakefile
256
+ - setup.rb
257
+ - bin/synapses-cas
258
+ - db/migrate/001_create_initial_structure.rb
259
+ - lib/casserver/authenticators/active_directory_ldap.rb
260
+ - lib/casserver/authenticators/active_resource.rb
261
+ - lib/casserver/authenticators/authlogic_crypto_providers/aes256.rb
262
+ - lib/casserver/authenticators/authlogic_crypto_providers/bcrypt.rb
263
+ - lib/casserver/authenticators/authlogic_crypto_providers/md5.rb
264
+ - lib/casserver/authenticators/authlogic_crypto_providers/sha1.rb
265
+ - lib/casserver/authenticators/authlogic_crypto_providers/sha512.rb
266
+ - lib/casserver/authenticators/base.rb
267
+ - lib/casserver/authenticators/client_certificate.rb
268
+ - lib/casserver/authenticators/google.rb
269
+ - lib/casserver/authenticators/ldap.rb
270
+ - lib/casserver/authenticators/ntlm.rb
271
+ - lib/casserver/authenticators/open_id.rb
272
+ - lib/casserver/authenticators/sql.rb
273
+ - lib/casserver/authenticators/sql_authlogic.rb
274
+ - lib/casserver/authenticators/sql_encrypted.rb
275
+ - lib/casserver/authenticators/sql_md5.rb
276
+ - lib/casserver/authenticators/sql_rest_auth.rb
277
+ - lib/casserver/authenticators/test.rb
278
+ - lib/casserver/cas.rb
279
+ - lib/casserver/localization.rb
280
+ - lib/casserver/model.rb
281
+ - lib/casserver/server.rb
282
+ - lib/casserver/utils.rb
283
+ - lib/casserver.rb
284
+ - public/themes/cas.css
285
+ - public/themes/notice.png
286
+ - public/themes/ok.png
287
+ - public/themes/simple/bg.png
288
+ - public/themes/simple/favicon.png
289
+ - public/themes/simple/login_box_bg.png
290
+ - public/themes/simple/logo.png
291
+ - public/themes/simple/theme.css
292
+ - public/themes/urbacon/bg.png
293
+ - public/themes/urbacon/login_box_bg.png
294
+ - public/themes/urbacon/logo.png
295
+ - public/themes/urbacon/theme.css
296
+ - public/themes/warning.png
297
+ - locales/de.yml
298
+ - locales/en.yml
299
+ - locales/es.yml
300
+ - locales/es_ar.yml
301
+ - locales/fr.yml
302
+ - locales/jp.yml
303
+ - locales/pl.yml
304
+ - locales/pt.yml
305
+ - locales/ru.yml
306
+ - locales/zh.yml
307
+ - locales/zh_tw.yml
308
+ - resources/init.d.sh
309
+ - config.ru
310
+ - config/config.example.yml
311
+ - config/unicorn.rb
312
+ - tasks/bundler.rake
313
+ - tasks/db/migrate.rake
314
+ - tasks/spec.rake
315
+ - lib/casserver/views/_login_form.erb
316
+ - lib/casserver/views/layout.erb
317
+ - lib/casserver/views/login.erb
318
+ - lib/casserver/views/validate.erb
319
+ - lib/casserver/views/proxy.builder
320
+ - lib/casserver/views/proxy_validate.builder
321
+ - lib/casserver/views/service_validate.builder
322
+ - Gemfile
323
+ - spec/alt_config.yml
324
+ - spec/authenticators/active_resource_spec.rb
325
+ - spec/authenticators/ldap_spec.rb
326
+ - spec/casserver_spec.rb
327
+ - spec/default_config.yml
328
+ - spec/model_spec.rb
329
+ - spec/spec.opts
330
+ - spec/spec_helper.rb
331
+ - spec/utils_spec.rb
332
+ homepage: https://github.com/synapsesgroup/synapses-cas
333
+ licenses: []
334
+ post_install_message: ! '
335
+
336
+ For more information on RubyCAS-Server, see http://code.google.com/p/rubycas-server
337
+
338
+
339
+ '
340
+ rdoc_options:
341
+ - --quiet
342
+ - --title
343
+ - RubyCAS-Server Documentation
344
+ - --opname
345
+ - index.html
346
+ - --line-numbers
347
+ - --main
348
+ - README.md
349
+ - --inline-source
350
+ require_paths:
351
+ - lib
352
+ required_ruby_version: !ruby/object:Gem::Requirement
353
+ none: false
354
+ requirements:
355
+ - - ! '>='
356
+ - !ruby/object:Gem::Version
357
+ version: '0'
358
+ required_rubygems_version: !ruby/object:Gem::Requirement
359
+ none: false
360
+ requirements:
361
+ - - ! '>='
362
+ - !ruby/object:Gem::Version
363
+ version: '0'
364
+ requirements: []
365
+ rubyforge_project:
366
+ rubygems_version: 1.8.24
367
+ signing_key:
368
+ specification_version: 3
369
+ summary: Provides single sign-on authentication for web applications using the CAS
370
+ protocol.
371
+ test_files:
372
+ - spec/alt_config.yml
373
+ - spec/authenticators/active_resource_spec.rb
374
+ - spec/authenticators/ldap_spec.rb
375
+ - spec/casserver_spec.rb
376
+ - spec/default_config.yml
377
+ - spec/model_spec.rb
378
+ - spec/spec.opts
379
+ - spec/spec_helper.rb
380
+ - spec/utils_spec.rb