derfred-rubycas-client 2.0.9992 → 2.0.9993
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.
|
@@ -39,6 +39,20 @@ module CASClient
|
|
|
39
39
|
@@log = client.log
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
# this guesses the service_url which is requesting the login
|
|
43
|
+
def self.read_service_url(controller)
|
|
44
|
+
if config[:service_url]
|
|
45
|
+
log.debug("Using explicitly set service url: #{config[:service_url]}")
|
|
46
|
+
return config[:service_url]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
params = controller.params.dup
|
|
50
|
+
params.delete(:ticket)
|
|
51
|
+
service_url = controller.url_for(params)
|
|
52
|
+
log.debug("Guessed service url: #{service_url.inspect}")
|
|
53
|
+
return service_url
|
|
54
|
+
end
|
|
55
|
+
|
|
42
56
|
# Returns the login URL for the current controller.
|
|
43
57
|
# Useful when you want to provide a "Login" link in a GatewayFilter'ed
|
|
44
58
|
# action.
|
|
@@ -17,10 +17,9 @@ module CASClient
|
|
|
17
17
|
def handle_request
|
|
18
18
|
return :single_sign_out if single_sign_out?(@controller)
|
|
19
19
|
|
|
20
|
-
st
|
|
21
|
-
|
|
20
|
+
st = determine_request_context(@controller)
|
|
22
21
|
if st
|
|
23
|
-
handle_ticket(@controller, st
|
|
22
|
+
handle_ticket(@controller, st)
|
|
24
23
|
else
|
|
25
24
|
handle_no_ticket(@controller)
|
|
26
25
|
end
|
|
@@ -40,12 +39,12 @@ module CASClient
|
|
|
40
39
|
|
|
41
40
|
private
|
|
42
41
|
# high level request handlers
|
|
43
|
-
def handle_ticket(controller, st
|
|
44
|
-
st = client.validate_service_ticket(st)
|
|
42
|
+
def handle_ticket(controller, st)
|
|
43
|
+
st = client.validate_service_ticket(st) unless st.has_been_validated?
|
|
45
44
|
vr = st.response
|
|
46
45
|
|
|
47
|
-
if
|
|
48
|
-
setup_new_session(controller, st, vr)
|
|
46
|
+
if st.is_valid?
|
|
47
|
+
setup_new_session(controller, st, vr)
|
|
49
48
|
|
|
50
49
|
# Store the ticket in the session to avoid re-validating the same service
|
|
51
50
|
# ticket with the CAS server.
|
|
@@ -204,8 +203,6 @@ module CASClient
|
|
|
204
203
|
last_st = controller.session[:cas_last_valid_ticket]
|
|
205
204
|
st = read_ticket(controller)
|
|
206
205
|
|
|
207
|
-
require_validation = true
|
|
208
|
-
|
|
209
206
|
if st && last_st &&
|
|
210
207
|
last_st.ticket == st.ticket &&
|
|
211
208
|
last_st.service == st.service
|
|
@@ -214,7 +211,6 @@ module CASClient
|
|
|
214
211
|
# the same ticket happens to be in the URL.
|
|
215
212
|
log.warn("Re-using previously validated ticket since the ticket id and service are the same.")
|
|
216
213
|
st = last_st
|
|
217
|
-
require_validation = false
|
|
218
214
|
elsif last_st &&
|
|
219
215
|
!config[:authenticate_on_every_request] &&
|
|
220
216
|
controller.session[client.username_session_key]
|
|
@@ -226,15 +222,13 @@ module CASClient
|
|
|
226
222
|
log.debug "Existing local CAS session detected for #{controller.session[client.username_session_key].inspect}. "+
|
|
227
223
|
"Previous ticket #{last_st.ticket.inspect} will be re-used."
|
|
228
224
|
st = last_st
|
|
229
|
-
require_validation = false
|
|
230
225
|
elsif last_st &&
|
|
231
226
|
config[:authenticate_on_every_request] &&
|
|
232
227
|
controller.session[client.username_session_key]
|
|
233
228
|
st = last_st
|
|
234
|
-
require_validation = true
|
|
235
229
|
end
|
|
236
230
|
|
|
237
|
-
|
|
231
|
+
st
|
|
238
232
|
end
|
|
239
233
|
|
|
240
234
|
def read_ticket(controller)
|
|
@@ -268,7 +262,7 @@ module CASClient
|
|
|
268
262
|
log.info("Ticket #{st.ticket.inspect} for service #{st.service.inspect} belonging to user #{vr.user.inspect} is VALID.")
|
|
269
263
|
controller.session[client.username_session_key] = vr.user.dup
|
|
270
264
|
controller.session[client.extra_attributes_session_key] = HashWithIndifferentAccess.new(vr.extra_attributes.dup)
|
|
271
|
-
|
|
265
|
+
|
|
272
266
|
if vr.extra_attributes
|
|
273
267
|
log.debug("Extra user attributes provided along with ticket #{st.ticket.inspect}: #{vr.extra_attributes.inspect}.")
|
|
274
268
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: derfred-rubycas-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.9993
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Zukowski
|
|
@@ -66,6 +66,7 @@ files:
|
|
|
66
66
|
- setup.rb
|
|
67
67
|
has_rdoc: true
|
|
68
68
|
homepage: http://rubycas-client.rubyforge.org
|
|
69
|
+
licenses:
|
|
69
70
|
post_install_message:
|
|
70
71
|
rdoc_options:
|
|
71
72
|
- --main
|
|
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
87
88
|
requirements: []
|
|
88
89
|
|
|
89
90
|
rubyforge_project: rubycas-client
|
|
90
|
-
rubygems_version: 1.
|
|
91
|
+
rubygems_version: 1.3.5
|
|
91
92
|
signing_key:
|
|
92
93
|
specification_version: 2
|
|
93
94
|
summary: Client library for the Central Authentication Service (CAS) protocol.
|