kch-rubycas-server 0.8.0.20090715

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 (78) hide show
  1. data/CHANGELOG.txt +1 -0
  2. data/History.txt +270 -0
  3. data/LICENSE.txt +504 -0
  4. data/Manifest.txt +85 -0
  5. data/PostInstall.txt +3 -0
  6. data/README.rdoc +26 -0
  7. data/Rakefile +4 -0
  8. data/bin/rubycas-server +13 -0
  9. data/bin/rubycas-server-ctl +9 -0
  10. data/config.example.yml +544 -0
  11. data/config.ru +38 -0
  12. data/config/hoe.rb +78 -0
  13. data/config/requirements.rb +15 -0
  14. data/custom_views.example.rb +11 -0
  15. data/lib/casserver.rb +58 -0
  16. data/lib/casserver/authenticators/active_directory_ldap.rb +11 -0
  17. data/lib/casserver/authenticators/base.rb +48 -0
  18. data/lib/casserver/authenticators/client_certificate.rb +46 -0
  19. data/lib/casserver/authenticators/google.rb +54 -0
  20. data/lib/casserver/authenticators/ldap.rb +147 -0
  21. data/lib/casserver/authenticators/ntlm.rb +88 -0
  22. data/lib/casserver/authenticators/open_id.rb +22 -0
  23. data/lib/casserver/authenticators/sql.rb +102 -0
  24. data/lib/casserver/authenticators/sql_encrypted.rb +77 -0
  25. data/lib/casserver/authenticators/sql_md5.rb +19 -0
  26. data/lib/casserver/authenticators/sql_rest_auth.rb +77 -0
  27. data/lib/casserver/authenticators/test.rb +19 -0
  28. data/lib/casserver/cas.rb +322 -0
  29. data/lib/casserver/conf.rb +75 -0
  30. data/lib/casserver/controllers.rb +456 -0
  31. data/lib/casserver/load_picnic.rb +19 -0
  32. data/lib/casserver/localization.rb +82 -0
  33. data/lib/casserver/models.rb +265 -0
  34. data/lib/casserver/postambles.rb +174 -0
  35. data/lib/casserver/utils.rb +30 -0
  36. data/lib/casserver/version.rb +9 -0
  37. data/lib/casserver/views.rb +245 -0
  38. data/lib/rubycas-server.rb +1 -0
  39. data/lib/rubycas-server/version.rb +1 -0
  40. data/po/de_DE/rubycas-server.po +119 -0
  41. data/po/es_ES/rubycas-server.po +115 -0
  42. data/po/fr_FR/rubycas-server.po +116 -0
  43. data/po/ja_JP/rubycas-server.po +118 -0
  44. data/po/pl_PL/rubycas-server.po +115 -0
  45. data/po/pt_BR/rubycas-server.po +115 -0
  46. data/po/ru_RU/rubycas-server.po +110 -0
  47. data/po/rubycas-server.pot +104 -0
  48. data/public/themes/cas.css +121 -0
  49. data/public/themes/notice.png +0 -0
  50. data/public/themes/ok.png +0 -0
  51. data/public/themes/simple/bg.png +0 -0
  52. data/public/themes/simple/login_box_bg.png +0 -0
  53. data/public/themes/simple/logo.png +0 -0
  54. data/public/themes/simple/theme.css +28 -0
  55. data/public/themes/urbacon/bg.png +0 -0
  56. data/public/themes/urbacon/login_box_bg.png +0 -0
  57. data/public/themes/urbacon/logo.png +0 -0
  58. data/public/themes/urbacon/theme.css +33 -0
  59. data/public/themes/warning.png +0 -0
  60. data/resources/init.d.sh +58 -0
  61. data/script/console +10 -0
  62. data/script/destroy +14 -0
  63. data/script/generate +14 -0
  64. data/script/txt2html +82 -0
  65. data/setup.rb +1585 -0
  66. data/tasks/deployment.rake +34 -0
  67. data/tasks/environment.rake +7 -0
  68. data/tasks/localization.rake +11 -0
  69. data/tasks/website.rake +17 -0
  70. data/vendor/isaac_0.9.1/LICENSE +26 -0
  71. data/vendor/isaac_0.9.1/README +78 -0
  72. data/vendor/isaac_0.9.1/TODO +3 -0
  73. data/vendor/isaac_0.9.1/VERSIONS +3 -0
  74. data/vendor/isaac_0.9.1/crypt/ISAAC.rb +171 -0
  75. data/vendor/isaac_0.9.1/isaac.gemspec +39 -0
  76. data/vendor/isaac_0.9.1/setup.rb +596 -0
  77. data/vendor/isaac_0.9.1/test/TC_ISAAC.rb +76 -0
  78. metadata +193 -0
@@ -0,0 +1,30 @@
1
+ # Misc utility function used throughout by the RubyCAS-server.
2
+ module CASServer
3
+ module Utils
4
+ def random_string(max_length = 29)
5
+ rg = Crypt::ISAAC.new
6
+ max = 4294619050
7
+ r = "#{Time.now.to_i}r%X%X%X%X%X%X%X%X" %
8
+ [rg.rand(max), rg.rand(max), rg.rand(max), rg.rand(max),
9
+ rg.rand(max), rg.rand(max), rg.rand(max), rg.rand(max)]
10
+ r[0..max_length-1]
11
+ end
12
+ module_function :random_string
13
+
14
+ def log_controller_action(controller, params)
15
+ $LOG << "\n"
16
+
17
+ /`(.*)'/.match(caller[1])
18
+ method = $~[1]
19
+
20
+ if params.respond_to? :dup
21
+ params2 = params.dup
22
+ params2['password'] = '******' if params2['password']
23
+ else
24
+ params2 = params
25
+ end
26
+ $LOG.debug("Processing #{controller}::#{method} #{params2.inspect}")
27
+ end
28
+ module_function :log_controller_action
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ module CASServer
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 7
5
+ TINY = 99999
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
@@ -0,0 +1,245 @@
1
+ # The #.#.# comments (e.g. "2.1.3") refer to section numbers in the CAS protocol spec
2
+ # under http://www.ja-sig.org/products/cas/overview/protocol/index.html
3
+
4
+ # need auto_validation off to render CAS responses and to use the autocomplete='off' property on password field
5
+ Markaby::Builder.set(:auto_validation, false)
6
+
7
+ # disabled XML indentation because it was causing problems with mod_auth_cas
8
+ #Markaby::Builder.set(:indent, 2)
9
+
10
+ module CASServer::Views
11
+
12
+ def layout
13
+ # wrap as XHTML only when auto_validation is on, otherwise pass right through
14
+ if @use_layout
15
+ xhtml_strict do
16
+ head do
17
+ title { "#{organization} #{_(' Central Login')}" }
18
+ link(:rel => "stylesheet", :type => "text/css", :href => "/themes/cas.css")
19
+ link(:rel => "stylesheet", :type => "text/css", :href => "/themes/#{current_theme}/theme.css")
20
+ link(:rel => "icon", :type => "image/png", :href => "/themes/#{current_theme}/favicon.png") if
21
+ File.exists?("#{$APP_ROOT}/public/themes/#{current_theme}/favicon.png")
22
+ end
23
+ body(:onload => "if (document.getElementById('username')) document.getElementById('username').focus()") do
24
+ self << yield
25
+ end
26
+ end
27
+ else
28
+ self << yield
29
+ end
30
+ end
31
+
32
+
33
+ # 2.1.3
34
+ # The full login page.
35
+ def login
36
+ @use_layout = true
37
+
38
+ table(:id => "login-box") do
39
+ tr do
40
+ td(:colspan => 2) do
41
+ div(:id => "headline-container") do
42
+ strong organization
43
+ text _(" Central Login")
44
+ end
45
+ end
46
+ end
47
+ if @message
48
+ tr do
49
+ td(:colspan => 2, :id => "messagebox-container") do
50
+ div(:class => "messagebox #{@message[:type]}") { @message[:message] }
51
+ end
52
+ end
53
+ end
54
+ tr do
55
+ td(:id => "logo-container") do
56
+ img(:id => "logo", :src => "/themes/#{current_theme}/logo.png")
57
+ end
58
+ td(:id => "login-form-container") do
59
+ @include_infoline = true
60
+ login_form
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ # Just the login form.
67
+ def login_form
68
+ form(:method => "post", :action => @form_action || '/login', :id => "login-form",
69
+ :onsubmit => "submitbutton = document.getElementById('login-submit'); submitbutton.value='#{ _("Please wait...") }'; submitbutton.disabled=true; return true;") do
70
+ table(:id => "form-layout") do
71
+ tr do
72
+ td(:id => "username-label-container") do
73
+ label(:id => "username-label", :for => "username") { _( "Username" ) }
74
+ end
75
+ td(:id => "username-container") do
76
+ input(:type => "text", :id => "username", :name => "username",
77
+ :size => "32", :tabindex => "1", :accesskey => "u")
78
+ end
79
+ end
80
+ tr do
81
+ td(:id => "password-label-container") do
82
+ label(:id => "password-label", :for => "password") { _( "Password" ) }
83
+ end
84
+ td(:id => "password-container") do
85
+ input(:type => "password", :id => "password", :name => "password",
86
+ :size => "32", :tabindex => "2", :accesskey => "p", :autocomplete => "off")
87
+ end
88
+ end
89
+ tr do
90
+ td{}
91
+ td(:id => "submit-container") do
92
+ input(:type => "hidden", :id => "lt", :name => "lt", :value => @lt)
93
+ input(:type => "hidden", :id => "service", :name => "service", :value => @service)
94
+ input(:type => "submit", :class => "button", :accesskey => "l", :value => _("LOGIN"), :tabindex => "4", :id => "login-submit")
95
+ end
96
+ end
97
+ tr do
98
+ td(:colspan => 2, :id => "infoline") { infoline }
99
+ end if @include_infoline
100
+ end
101
+ end
102
+ end
103
+
104
+ # 2.3.2
105
+ def logout
106
+ @use_layout = true
107
+
108
+ table(:id => "login-box") do
109
+ tr do
110
+ td(:colspan => 2) do
111
+ div(:id => "headline-container") do
112
+ strong organization
113
+ text _(" Central Login")
114
+ end
115
+ end
116
+ end
117
+ if @message
118
+ tr do
119
+ td(:colspan => 2, :id => "messagebox-container") do
120
+ div(:class => "messagebox #{@message[:type]}") { @message[:message] }
121
+ if @continue_url
122
+ p do
123
+ a(:href => @continue_url) { @continue_url }
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ # 2.4.2
133
+ # CAS 1.0 validate response.
134
+ def validate
135
+ if @success
136
+ text "yes\n#{@username}\n"
137
+ else
138
+ text "no\n\n"
139
+ end
140
+ end
141
+
142
+ # 2.5.2
143
+ # CAS 2.0 service validate response.
144
+ def service_validate
145
+ if @success
146
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
147
+ tag!("cas:authenticationSuccess") do
148
+ tag!("cas:user") {@username.to_s.to_xs}
149
+ @extra_attributes.each do |key, value|
150
+ tag!(key) {serialize_extra_attribute(value)}
151
+ end
152
+ if @pgtiou
153
+ tag!("cas:proxyGrantingTicket") {@pgtiou.to_s.to_xs}
154
+ end
155
+ end
156
+ end
157
+ else
158
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
159
+ tag!("cas:authenticationFailure", :code => @error.code) {@error.to_s.to_xs}
160
+ end
161
+ end
162
+ end
163
+
164
+ # 2.6.2
165
+ # CAS 2.0 proxy validate response.
166
+ def proxy_validate
167
+ if @success
168
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
169
+ tag!("cas:authenticationSuccess") do
170
+ tag!("cas:user") {@username.to_s.to_xs}
171
+ @extra_attributes.each do |key, value|
172
+ tag!(key) {serialize_extra_attribute(value)}
173
+ end
174
+ if @pgtiou
175
+ tag!("cas:proxyGrantingTicket") {@pgtiou.to_s.to_xs}
176
+ end
177
+ if @proxies && !@proxies.empty?
178
+ tag!("cas:proxies") do
179
+ @proxies.each do |proxy_url|
180
+ tag!("cas:proxy") {proxy_url.to_s.to_xs}
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
186
+ else
187
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
188
+ tag!("cas:authenticationFailure", :code => @error.code) {@error.to_s.to_xs}
189
+ end
190
+ end
191
+ end
192
+
193
+ # 2.7.2
194
+ # CAS 2.0 proxy request response.
195
+ def proxy
196
+ if @success
197
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
198
+ tag!("cas:proxySuccess") do
199
+ tag!("cas:proxyTicket") {@pt.to_s.to_xs}
200
+ end
201
+ end
202
+ else
203
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
204
+ tag!("cas:proxyFailure", :code => @error.code) {@error.to_s.to_xs}
205
+ end
206
+ end
207
+ end
208
+
209
+ def configure
210
+ end
211
+
212
+ protected
213
+ def themes_dir
214
+ File.dirname(File.expand_path(__FILE__))+'../themes'
215
+ end
216
+ module_function :themes_dir
217
+
218
+ def current_theme
219
+ $CONF.theme || "simple"
220
+ end
221
+ module_function :current_theme
222
+
223
+ def organization
224
+ $CONF.organization || ""
225
+ end
226
+ module_function :organization
227
+
228
+ def infoline
229
+ $CONF.infoline || ""
230
+ end
231
+ module_function :infoline
232
+
233
+ def serialize_extra_attribute(value)
234
+ if value.kind_of?(String) || value.kind_of?(Numeric)
235
+ value
236
+ else
237
+ "<![CDATA[#{value.to_yaml}]]>"
238
+ end
239
+ end
240
+ module_function :serialize_extra_attribute
241
+ end
242
+
243
+ if $CONF.custom_views_file
244
+ require $CONF.custom_views_file
245
+ end
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__)+'/casserver'
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__)+'/../casserver/version.rb'
@@ -0,0 +1,119 @@
1
+ # German translations for RubyCAS-Server package
2
+ # German messages for RubyCAS-Server.
3
+ # Copyright (C) 2008 THE RubyCAS-Server'S COPYRIGHT HOLDER
4
+ # This file is distributed under the same license as the RubyCAS-Server package.
5
+ # Matt Zukowski <mzukowski@urbacon.net>, 2008.
6
+ #
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: rubycas-server \n"
10
+ "POT-Creation-Date: 2009-05-06 18:16-0400\n"
11
+ "PO-Revision-Date: 2008-11-12 12:49-0500\n"
12
+ "Last-Translator: Matt Zukowski <mzukowski@urbacon.net>\n"
13
+ "Language-Team: German\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ #: lib/casserver/cas.rb:117
20
+ msgid ""
21
+ "Your login request did not include a login ticket. There may be a problem "
22
+ "with the authentication system."
23
+ msgstr ""
24
+
25
+ #: lib/casserver/cas.rb:121
26
+ msgid ""
27
+ "The login ticket you provided has already been used up. Please try logging "
28
+ "in again."
29
+ msgstr ""
30
+
31
+ #: lib/casserver/cas.rb:126
32
+ msgid "You took too long to enter your credentials. Please try again."
33
+ msgstr ""
34
+
35
+ #: lib/casserver/cas.rb:130
36
+ msgid ""
37
+ "The login ticket you provided is invalid. There may be a problem with the "
38
+ "authentication system."
39
+ msgstr ""
40
+
41
+ #: lib/casserver/controllers.rb:32
42
+ msgid ""
43
+ "You are currently logged in as '%s'. If this is not you, please log in below."
44
+ msgstr ""
45
+ "Sie sind derzeit angemeldet als '%s'. Sollten dies nicht Sie sein, melden "
46
+ "Sie sich bitte unten an."
47
+
48
+ #: lib/casserver/controllers.rb:37
49
+ msgid ""
50
+ "The client and server are unable to negotiate authentication. Please try "
51
+ "logging in again later."
52
+ msgstr ""
53
+ "Client und Server sind nicht in der Lage eine Authentifizierung "
54
+ "auszuhandeln. Bitte versuchen Sie, sich zu einem späteren Zeitpunkt erneut "
55
+ "anzumelden."
56
+
57
+ #: lib/casserver/controllers.rb:54
58
+ msgid ""
59
+ "The server cannot fulfill this gateway request because no service parameter "
60
+ "was given."
61
+ msgstr ""
62
+ "Der Server kann diese Gateway-Anfrage nicht erfüllen, da keine Service-"
63
+ "Parameter übergeben wurden."
64
+
65
+ #: lib/casserver/controllers.rb:59 lib/casserver/controllers.rb:195
66
+ msgid ""
67
+ "The target service your browser supplied appears to be invalid. Please "
68
+ "contact your system administrator for help."
69
+ msgstr ""
70
+ "Das Ziel-Service, welches Ihr Browsers geliefert hat, scheint ungültig zu "
71
+ "sein. Bitte wenden Sie sich an Ihren Systemadministrator, um Hilfe zu "
72
+ "erhalten."
73
+
74
+ #: lib/casserver/controllers.rb:88
75
+ msgid ""
76
+ "Could not guess the CAS login URI. Please supply a submitToURI parameter "
77
+ "with your request."
78
+ msgstr ""
79
+ "Der CAS-Login-URI konnte nicht erraten werden. Bitte ergänzen Sie Ihre "
80
+ "Anfrage um einen submitToURI Parameter."
81
+
82
+ #: lib/casserver/controllers.rb:184
83
+ msgid "You have successfully logged in."
84
+ msgstr ""
85
+ "Sie haben sich erfolgreich am Central Authentication Service angemeldet."
86
+
87
+ #: lib/casserver/controllers.rb:200
88
+ msgid "Incorrect username or password."
89
+ msgstr "Falscher Benutzername oder Passwort."
90
+
91
+ #: lib/casserver/controllers.rb:257
92
+ msgid "You have successfully logged out."
93
+ msgstr ""
94
+ "Sie haben sich erfolgreich vom Central Authentication Service abgemeldet."
95
+
96
+ #: lib/casserver/controllers.rb:260
97
+ msgid " Please click on the following link to continue:"
98
+ msgstr " Bitte klicken Sie auf den folgenden Link, um fortzufahren:"
99
+
100
+ #: lib/casserver/controllers.rb:410
101
+ msgid "To generate a login ticket, you must make a POST request."
102
+ msgstr ""
103
+ "Für die Generierung eines Login-Tickets, ist eine POST-Anfrage erforderlich."
104
+
105
+ #: lib/casserver/views.rb:43 lib/casserver/views.rb:113
106
+ msgid " Central Login"
107
+ msgstr " Zentrales Login"
108
+
109
+ #: lib/casserver/views.rb:73
110
+ msgid "Username"
111
+ msgstr "Benutzername"
112
+
113
+ #: lib/casserver/views.rb:82
114
+ msgid "Password"
115
+ msgstr "Passwort"
116
+
117
+ #: lib/casserver/views.rb:94
118
+ msgid "LOGIN"
119
+ msgstr "ANMELDEN"
@@ -0,0 +1,115 @@
1
+ # Spanish translations for RubyCAS-Server package
2
+ # Traducciones al espa ol para el paquete RubyCAS-Server.
3
+ # Copyright (C) 2008 THE RubyCAS-Server'S COPYRIGHT HOLDER
4
+ # This file is distributed under the same license as the RubyCAS-Server package.
5
+ # Matt Zukowski <mzukowski@urbacon.net>, 2008.
6
+ #
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: rubycas-server \n"
10
+ "POT-Creation-Date: 2009-05-06 18:16-0400\n"
11
+ "PO-Revision-Date: 2008-11-12 12:30-0500\n"
12
+ "Last-Translator: Matt Zukowski <mzukowski@urbacon.net>\n"
13
+ "Language-Team: Spanish\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ #: lib/casserver/cas.rb:117
20
+ msgid ""
21
+ "Your login request did not include a login ticket. There may be a problem "
22
+ "with the authentication system."
23
+ msgstr ""
24
+
25
+ #: lib/casserver/cas.rb:121
26
+ msgid ""
27
+ "The login ticket you provided has already been used up. Please try logging "
28
+ "in again."
29
+ msgstr ""
30
+
31
+ #: lib/casserver/cas.rb:126
32
+ msgid "You took too long to enter your credentials. Please try again."
33
+ msgstr ""
34
+
35
+ #: lib/casserver/cas.rb:130
36
+ msgid ""
37
+ "The login ticket you provided is invalid. There may be a problem with the "
38
+ "authentication system."
39
+ msgstr ""
40
+
41
+ #: lib/casserver/controllers.rb:32
42
+ msgid ""
43
+ "You are currently logged in as '%s'. If this is not you, please log in below."
44
+ msgstr ""
45
+ "Usted está conectado como '%s'. Si no lo es usted, por favor, acceda a "
46
+ "continuación."
47
+
48
+ #: lib/casserver/controllers.rb:37
49
+ msgid ""
50
+ "The client and server are unable to negotiate authentication. Please try "
51
+ "logging in again later."
52
+ msgstr ""
53
+ "El cliente y el servidor no están en condiciones de negociar la "
54
+ "autenticación. Por favor, intente acceder de nuevo más tarde."
55
+
56
+ #: lib/casserver/controllers.rb:54
57
+ msgid ""
58
+ "The server cannot fulfill this gateway request because no service parameter "
59
+ "was given."
60
+ msgstr ""
61
+ "El servidor no puede cumplir con esta petición, porque no fue parámetro de "
62
+ "servicio prestado."
63
+
64
+ #: lib/casserver/controllers.rb:59 lib/casserver/controllers.rb:195
65
+ msgid ""
66
+ "The target service your browser supplied appears to be invalid. Please "
67
+ "contact your system administrator for help."
68
+ msgstr ""
69
+ "El objetivo de su navegador de servicios ofrecidos parece ser nula. Por "
70
+ "favor, póngase en contacto con el administrador del sistema para obtener "
71
+ "ayuda."
72
+
73
+ #: lib/casserver/controllers.rb:88
74
+ msgid ""
75
+ "Could not guess the CAS login URI. Please supply a submitToURI parameter "
76
+ "with your request."
77
+ msgstr ""
78
+ "No podía adivinar el URI de acceso CAS. Suministro submitToURI un parámetro "
79
+ "con su solicitud."
80
+
81
+ #: lib/casserver/controllers.rb:184
82
+ msgid "You have successfully logged in."
83
+ msgstr "Inicio de sesión satisfactorio."
84
+
85
+ #: lib/casserver/controllers.rb:200
86
+ msgid "Incorrect username or password."
87
+ msgstr "Incorrecto nombre de usuario o contraseña."
88
+
89
+ #: lib/casserver/controllers.rb:257
90
+ msgid "You have successfully logged out."
91
+ msgstr "Cierre de sesión satisfactorio."
92
+
93
+ #: lib/casserver/controllers.rb:260
94
+ msgid " Please click on the following link to continue:"
95
+ msgstr " Por favor, haga clic en el vínculo siguiente para continuar:"
96
+
97
+ #: lib/casserver/controllers.rb:410
98
+ msgid "To generate a login ticket, you must make a POST request."
99
+ msgstr "Para generar un ticket de acceso, usted debe hacer una petición POST."
100
+
101
+ #: lib/casserver/views.rb:43 lib/casserver/views.rb:113
102
+ msgid " Central Login"
103
+ msgstr " Servicio de Autenticación Central"
104
+
105
+ #: lib/casserver/views.rb:73
106
+ msgid "Username"
107
+ msgstr "Usuario"
108
+
109
+ #: lib/casserver/views.rb:82
110
+ msgid "Password"
111
+ msgstr "Contraseña"
112
+
113
+ #: lib/casserver/views.rb:94
114
+ msgid "LOGIN"
115
+ msgstr "INICIAR SESIÓN"