rack-cas 0.16.0 → 0.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +11 -2
- data/lib/rack-cas/configuration.rb +2 -1
- data/lib/rack-cas/server.rb +2 -1
- data/lib/rack-cas/version.rb +1 -1
- data/lib/rack/cas.rb +15 -3
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: af1e3b165fc96ee826408cdb92a8b75efde25142bfe3a723b637427bedd14a8b
|
4
|
+
data.tar.gz: a81f1d05e4eadedf53aa97bdae224345c0e969370a4b6f399e465b43229793d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763c339ba9e541aa94401135f471b475434816fee5287fb84a1a8adefcd0ed098bcfdfcad64737891c9075aa99cddc173ee75bbc81c6bae464a33f74181a87e3
|
7
|
+
data.tar.gz: 689db6c253c92114a9609ccfa870da73816fc3d684e744a63521d15ee52f814298c8137f7b49bf178ed385c45104ff00aec02f406c96bd9a9a4e2ec1c1cf58eb
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ One of the included session stores must be used.
|
|
18
18
|
|
19
19
|
Requirements
|
20
20
|
============
|
21
|
-
* Ruby >=
|
21
|
+
* Ruby >= 2.0
|
22
22
|
* A working [CAS server](http://casino.rbcas.com)
|
23
23
|
* An app that [returns a `401 Unauthorized`](#integration) status when authentication is required
|
24
24
|
|
@@ -109,7 +109,7 @@ See the [example Sinatra app](https://gist.github.com/adamcrown/a7e7577594690335
|
|
109
109
|
|
110
110
|
### Single Sign Out ###
|
111
111
|
|
112
|
-
You will need to store sessions in session store supported by Rack CAS.
|
112
|
+
You will need to store sessions in session store supported by Rack CAS.
|
113
113
|
|
114
114
|
#### Active Record ####
|
115
115
|
Add a migration that looks roughly like
|
@@ -168,6 +168,15 @@ a `Rack::Request` object as a parameter.
|
|
168
168
|
use Rack::CAS, server_url: '...', exclude_request_validator: Proc.new { |req| req.env['HTTP_CONTENT_TYPE'] == 'application/json' }
|
169
169
|
```
|
170
170
|
|
171
|
+
Service URL
|
172
|
+
--------------------
|
173
|
+
|
174
|
+
Sometimes you need to force the `service=` attribute on login requests, and not just use the request url in an automatic way.
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
use Rack::CAS, service: 'http://anotherexample.com'
|
178
|
+
```
|
179
|
+
|
171
180
|
Ignore 401 Intercept
|
172
181
|
--------------------
|
173
182
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module RackCAS
|
2
2
|
class Configuration
|
3
3
|
SETTINGS = [:fake, :fake_attributes, :server_url, :session_store, :exclude_path, :exclude_paths, :extra_attributes_filter,
|
4
|
-
:verify_ssl_cert, :renew, :use_saml_validation, :ignore_intercept_validator, :exclude_request_validator, :protocol
|
4
|
+
:verify_ssl_cert, :renew, :use_saml_validation, :ignore_intercept_validator, :exclude_request_validator, :protocol,
|
5
|
+
:redis_options, :login_url, :service]
|
5
6
|
|
6
7
|
|
7
8
|
SETTINGS.each do |setting|
|
data/lib/rack-cas/server.rb
CHANGED
@@ -13,7 +13,8 @@ module RackCAS
|
|
13
13
|
base_params = {service: service_url}
|
14
14
|
base_params[:renew] = true if RackCAS.config.renew?
|
15
15
|
|
16
|
-
@url.dup.append_path('login')
|
16
|
+
url = RackCAS.config.login_url? ? RackCAS::URL.parse(RackCAS.config.login_url) : @url.dup.append_path('login')
|
17
|
+
url.add_params(base_params.merge(params))
|
17
18
|
end
|
18
19
|
|
19
20
|
def logout_url(params = {})
|
data/lib/rack-cas/version.rb
CHANGED
data/lib/rack/cas.rb
CHANGED
@@ -21,16 +21,18 @@ class Rack::CAS
|
|
21
21
|
if cas_request.ticket_validation?
|
22
22
|
log env, 'rack-cas: Intercepting ticket validation request.'
|
23
23
|
|
24
|
+
service_url = RackCAS.config.service? ? RackCAS.config.service : cas_request.service_url
|
25
|
+
|
24
26
|
begin
|
25
27
|
user, extra_attrs = get_user(request.url, cas_request.ticket)
|
26
28
|
rescue RackCAS::ServiceValidationResponse::TicketInvalidError, RackCAS::SAMLValidationResponse::TicketInvalidError
|
27
29
|
log env, 'rack-cas: Invalid ticket. Redirecting to CAS login.'
|
28
30
|
|
29
|
-
return redirect_to server.login_url(
|
31
|
+
return redirect_to server.login_url(service_url).to_s
|
30
32
|
end
|
31
33
|
|
32
34
|
store_session request, user, cas_request.ticket, extra_attrs
|
33
|
-
return redirect_to
|
35
|
+
return redirect_to service_url
|
34
36
|
end
|
35
37
|
|
36
38
|
if cas_request.logout?
|
@@ -52,7 +54,17 @@ class Rack::CAS
|
|
52
54
|
if response[0] == 401 && !ignore_intercept?(request) # access denied
|
53
55
|
log env, 'rack-cas: Intercepting 401 access denied response. Redirecting to CAS login.'
|
54
56
|
|
55
|
-
|
57
|
+
url = if RackCAS.config.service?
|
58
|
+
configured_service_url = RackCAS::URL.parse(RackCAS.config.service)
|
59
|
+
request_url = RackCAS::URL.parse(request.url)
|
60
|
+
request_url.host = configured_service_url.host
|
61
|
+
request_url.scheme = configured_service_url.scheme
|
62
|
+
request_url.to_s
|
63
|
+
else
|
64
|
+
cas_request.service_url
|
65
|
+
end
|
66
|
+
|
67
|
+
redirect_to server.login_url(url).to_s
|
56
68
|
else
|
57
69
|
response
|
58
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-cas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Crownoble
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -151,15 +151,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: 2.0.0
|
155
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
requirements: []
|
161
|
-
|
162
|
-
rubygems_version: 2.6.11
|
161
|
+
rubygems_version: 3.0.3
|
163
162
|
signing_key:
|
164
163
|
specification_version: 4
|
165
164
|
summary: Rack-based CAS client
|