go_sso 0.5.7 → 0.5.9
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.
- checksums.yaml +4 -4
- data/lib/go_sso/middleware.rb +27 -2
- data/lib/go_sso/version.rb +1 -1
- metadata +19 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29f3d54e6659473f6789dab9172a3d8c7800448782daaab961407f673499a6b0
|
|
4
|
+
data.tar.gz: 91a0b671cb93eede2bf50ec46bfc8f68d3bd48ac4669c8b1f2a9d6a07fbcda67
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 677cc57a7d920d4100341114975c63a3bae27c1d688b946b1df5849a4dd6e9959063071f6e60e0308492f1f007e8ac52c8631b4c8139c6b44856ec57f8428fd3
|
|
7
|
+
data.tar.gz: c2dc18923f404779aa405a1aea3ceaaba35bd40e317a76eda7ed5aee0acb2ea1a3001a9542778984909536ccda2fad19ce095356848a5d94c902f0d55426468a
|
data/lib/go_sso/middleware.rb
CHANGED
|
@@ -39,7 +39,9 @@ module GoSso
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def request_call
|
|
42
|
-
session[:go_sso_referrer] = request.params["redirect_url"] ||
|
|
42
|
+
session[:go_sso_referrer] = safe_redirect_target(request.params["redirect_url"]) ||
|
|
43
|
+
safe_redirect_target(request.referrer) ||
|
|
44
|
+
request.base_url
|
|
43
45
|
|
|
44
46
|
if GoSso.test_mode?
|
|
45
47
|
redirect client_callback_path
|
|
@@ -50,7 +52,9 @@ module GoSso
|
|
|
50
52
|
|
|
51
53
|
def logout_call
|
|
52
54
|
set_sso_token(nil)
|
|
53
|
-
redirect request.params["redirect_url"] ||
|
|
55
|
+
redirect safe_redirect_target(request.params["redirect_url"]) ||
|
|
56
|
+
safe_redirect_target(request.referrer) ||
|
|
57
|
+
request.base_url
|
|
54
58
|
end
|
|
55
59
|
|
|
56
60
|
def callback_call
|
|
@@ -108,5 +112,26 @@ module GoSso
|
|
|
108
112
|
def url_options
|
|
109
113
|
{ script_name: request.script_name, protocol: "https" }
|
|
110
114
|
end
|
|
115
|
+
|
|
116
|
+
# Reject values that could either crash JSON cookie serialization
|
|
117
|
+
# (invalid UTF-8) or trigger an open redirect (off-host targets,
|
|
118
|
+
# protocol-relative URLs, non-http(s) schemes). Returns nil to fall
|
|
119
|
+
# back to the safe default in the caller.
|
|
120
|
+
def safe_redirect_target(url)
|
|
121
|
+
return nil unless url.is_a?(String)
|
|
122
|
+
return nil unless url.dup.force_encoding(Encoding::UTF_8).valid_encoding?
|
|
123
|
+
return nil if url.empty?
|
|
124
|
+
return nil if url.start_with?("//")
|
|
125
|
+
|
|
126
|
+
uri = URI.parse(url) rescue nil
|
|
127
|
+
return nil unless uri
|
|
128
|
+
|
|
129
|
+
if uri.absolute?
|
|
130
|
+
return nil unless %w[http https].include?(uri.scheme)
|
|
131
|
+
return nil unless uri.host&.casecmp(GoSso::Current.host.to_s) == 0
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
url
|
|
135
|
+
end
|
|
111
136
|
end
|
|
112
137
|
end
|
data/lib/go_sso/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,45 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: go_sso
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yi Feng
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
13
|
+
name: rails
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
18
|
+
version: 7.2.0
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
25
|
+
version: 7.2.0
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
27
|
+
name: oauth2
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
|
-
- - "
|
|
30
|
+
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
34
|
-
type: :
|
|
32
|
+
version: 2.0.0
|
|
33
|
+
type: :runtime
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
|
-
- - "
|
|
37
|
+
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
39
|
+
version: 2.0.0
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
41
|
+
name: sqlite3
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
44
43
|
requirements:
|
|
45
44
|
- - ">="
|
|
@@ -53,7 +52,7 @@ dependencies:
|
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
53
|
version: '0'
|
|
55
54
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
55
|
+
name: pry
|
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
58
|
- - ">="
|
|
@@ -67,7 +66,7 @@ dependencies:
|
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
67
|
version: '0'
|
|
69
68
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
69
|
+
name: simplecov
|
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
|
72
71
|
requirements:
|
|
73
72
|
- - ">="
|
|
@@ -81,7 +80,7 @@ dependencies:
|
|
|
81
80
|
- !ruby/object:Gem::Version
|
|
82
81
|
version: '0'
|
|
83
82
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
83
|
+
name: mocha
|
|
85
84
|
requirement: !ruby/object:Gem::Requirement
|
|
86
85
|
requirements:
|
|
87
86
|
- - ">="
|
|
@@ -95,7 +94,7 @@ dependencies:
|
|
|
95
94
|
- !ruby/object:Gem::Version
|
|
96
95
|
version: '0'
|
|
97
96
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
97
|
+
name: appraisal
|
|
99
98
|
requirement: !ruby/object:Gem::Requirement
|
|
100
99
|
requirements:
|
|
101
100
|
- - ">="
|
|
@@ -131,7 +130,6 @@ homepage: https://github.com/yfxie/go_sso
|
|
|
131
130
|
licenses:
|
|
132
131
|
- MIT
|
|
133
132
|
metadata: {}
|
|
134
|
-
post_install_message:
|
|
135
133
|
rdoc_options: []
|
|
136
134
|
require_paths:
|
|
137
135
|
- lib
|
|
@@ -146,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
146
144
|
- !ruby/object:Gem::Version
|
|
147
145
|
version: '0'
|
|
148
146
|
requirements: []
|
|
149
|
-
rubygems_version: 3.
|
|
150
|
-
signing_key:
|
|
147
|
+
rubygems_version: 3.6.9
|
|
151
148
|
specification_version: 4
|
|
152
149
|
summary: Summary of GoSso.
|
|
153
150
|
test_files: []
|