masks 0.10.0 → 0.11.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.md +128 -8
- data/app/controllers/masks/rails/handshakes_controller.rb +8 -0
- data/app/controllers/masks/rails/sessions_controller.rb +2 -1
- data/lib/masks/client/device.rb +47 -0
- data/lib/masks/client/embedded.rb +125 -0
- data/lib/masks/client/enrollment.rb +33 -0
- data/lib/masks/client/errors.rb +6 -0
- data/lib/masks/client/http.rb +89 -15
- data/lib/masks/client/issuer.rb +2 -1
- data/lib/masks/client/key.rb +100 -0
- data/lib/masks/client/nonces.rb +31 -0
- data/lib/masks/client/proof.rb +7 -1
- data/lib/masks/client/rack.rb +8 -0
- data/lib/masks/client/registration.rb +32 -15
- data/lib/masks/client/session.rb +120 -11
- data/lib/masks/client/tokens.rb +4 -0
- data/lib/masks/client/transport.rb +114 -0
- data/lib/masks/client.rb +21 -0
- data/lib/masks/rails/authentication.rb +23 -8
- data/lib/masks/rails/configuration.rb +7 -2
- data/lib/masks/rails/protected_resource.rb +13 -0
- data/lib/masks/version.rb +1 -1
- metadata +7 -1
|
@@ -7,12 +7,13 @@ module Masks
|
|
|
7
7
|
|
|
8
8
|
included do
|
|
9
9
|
if respond_to?(:helper_method)
|
|
10
|
-
helper_method :masked, :masks_login_url
|
|
10
|
+
helper_method :masked, :masks_login_url
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
REQUESTS = "masks_requests".freeze
|
|
15
15
|
HANDSHAKES = "masks_handshakes".freeze
|
|
16
|
+
FAREWELLS = "masks_farewells".freeze
|
|
16
17
|
STEPPED_UP = "masks_stepped_up".freeze
|
|
17
18
|
STEP_UP_WITHIN = 300
|
|
18
19
|
|
|
@@ -28,6 +29,10 @@ module Masks
|
|
|
28
29
|
@masks_handshakes ||= masks_tracker(HANDSHAKES)
|
|
29
30
|
end
|
|
30
31
|
|
|
32
|
+
def masks_farewells
|
|
33
|
+
masks_tracker(FAREWELLS)
|
|
34
|
+
end
|
|
35
|
+
|
|
31
36
|
def masks_tracker(key)
|
|
32
37
|
Masks::Client::Tracker.new(Masks::Client::Stores::Session.new(session, key))
|
|
33
38
|
end
|
|
@@ -152,21 +157,17 @@ module Masks
|
|
|
152
157
|
profile.empty? ? nil : held.merge(profile.slice(*IDENTITY))
|
|
153
158
|
end
|
|
154
159
|
|
|
155
|
-
def masks_logout_url(
|
|
160
|
+
def masks_logout_url(state:)
|
|
156
161
|
return nil unless masks_configured?
|
|
157
162
|
|
|
158
163
|
masks_session.end_session_url(
|
|
159
|
-
post_logout_redirect_uri:
|
|
160
|
-
state:
|
|
164
|
+
post_logout_redirect_uri: masks_config.return_to_for(request),
|
|
165
|
+
state: state
|
|
161
166
|
)
|
|
162
167
|
rescue Masks::Client::Error
|
|
163
168
|
nil
|
|
164
169
|
end
|
|
165
170
|
|
|
166
|
-
def masks_post_logout_redirect_uri
|
|
167
|
-
"#{request.base_url}#{masks_local_path(masks_config.after_sign_out) || '/'}"
|
|
168
|
-
end
|
|
169
|
-
|
|
170
171
|
def masks_login_url(return_to: nil, organization: nil, privilege: nil)
|
|
171
172
|
path = Masks::Rails::Engine.routes.url_helpers.start_path
|
|
172
173
|
query = {
|
|
@@ -193,6 +194,20 @@ module Masks
|
|
|
193
194
|
|
|
194
195
|
private
|
|
195
196
|
|
|
197
|
+
def masks_sign_out_upstream
|
|
198
|
+
return nil unless masks_configured?
|
|
199
|
+
|
|
200
|
+
farewell = masks_farewells.open
|
|
201
|
+
url = masks_logout_url(state: farewell.id)
|
|
202
|
+
|
|
203
|
+
masks_farewells.clear! if url.nil?
|
|
204
|
+
url
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def masks_after_sign_out_path
|
|
208
|
+
masks_local_path(masks_config.after_sign_out) || "/"
|
|
209
|
+
end
|
|
210
|
+
|
|
196
211
|
def masks_authorize_session!(wanted)
|
|
197
212
|
return false unless authenticate_masks!
|
|
198
213
|
|
|
@@ -11,7 +11,7 @@ module Masks
|
|
|
11
11
|
:after_sign_out, :session_key, :sign_out_of_issuer, :parent_controller,
|
|
12
12
|
:credentials_path, :authenticate_everything, :delegates
|
|
13
13
|
attr_writer :issuer, :redirect_uri, :name, :credentials, :store, :forget, :logged_out,
|
|
14
|
-
:delegation_redirect_uri, :organization, :manages
|
|
14
|
+
:delegation_redirect_uri, :organization, :manages, :replay
|
|
15
15
|
|
|
16
16
|
def initialize
|
|
17
17
|
@scope = Masks::Client::Session::DEFAULT_SCOPE
|
|
@@ -139,10 +139,15 @@ module Masks
|
|
|
139
139
|
Masks::Client::Resource.new(
|
|
140
140
|
issuer: issuer_for(request),
|
|
141
141
|
url: url,
|
|
142
|
-
scopes: resource_scopes
|
|
142
|
+
scopes: resource_scopes,
|
|
143
|
+
replay: replay
|
|
143
144
|
)
|
|
144
145
|
end
|
|
145
146
|
|
|
147
|
+
def replay
|
|
148
|
+
@replay || Masks::Client::Proof.memory
|
|
149
|
+
end
|
|
150
|
+
|
|
146
151
|
def handshake_for(request)
|
|
147
152
|
Masks::Client::Handshake.new(
|
|
148
153
|
issuer_for(request),
|
|
@@ -5,6 +5,10 @@ module Masks
|
|
|
5
5
|
include Masks::Rails::Configurable
|
|
6
6
|
include Masks::Rails::Privileged
|
|
7
7
|
|
|
8
|
+
included do
|
|
9
|
+
rescue_from Masks::Client::ReplayUnavailable, with: :masks_unavailable if respond_to?(:rescue_from)
|
|
10
|
+
end
|
|
11
|
+
|
|
8
12
|
def masks_resource
|
|
9
13
|
@masks_resource ||= masks_config.resource_server_for(request)
|
|
10
14
|
end
|
|
@@ -41,6 +45,15 @@ module Masks
|
|
|
41
45
|
}, status: error.status
|
|
42
46
|
end
|
|
43
47
|
|
|
48
|
+
def masks_unavailable
|
|
49
|
+
response.headers["Cache-Control"] = "no-store"
|
|
50
|
+
|
|
51
|
+
render json: {
|
|
52
|
+
"error" => "temporarily_unavailable",
|
|
53
|
+
"error_description" => "the token could not be checked"
|
|
54
|
+
}, status: :service_unavailable
|
|
55
|
+
end
|
|
56
|
+
|
|
44
57
|
def masks_resource_metadata
|
|
45
58
|
masks_resource.metadata
|
|
46
59
|
end
|
data/lib/masks/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: masks
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- the masks authors
|
|
@@ -50,12 +50,17 @@ files:
|
|
|
50
50
|
- lib/masks/client/claims.rb
|
|
51
51
|
- lib/masks/client/delegations.rb
|
|
52
52
|
- lib/masks/client/delegations/fake.rb
|
|
53
|
+
- lib/masks/client/device.rb
|
|
54
|
+
- lib/masks/client/embedded.rb
|
|
55
|
+
- lib/masks/client/enrollment.rb
|
|
53
56
|
- lib/masks/client/errors.rb
|
|
54
57
|
- lib/masks/client/handshake.rb
|
|
55
58
|
- lib/masks/client/http.rb
|
|
56
59
|
- lib/masks/client/introspection.rb
|
|
57
60
|
- lib/masks/client/issuer.rb
|
|
61
|
+
- lib/masks/client/key.rb
|
|
58
62
|
- lib/masks/client/logout.rb
|
|
63
|
+
- lib/masks/client/nonces.rb
|
|
59
64
|
- lib/masks/client/pkce.rb
|
|
60
65
|
- lib/masks/client/proof.rb
|
|
61
66
|
- lib/masks/client/rack.rb
|
|
@@ -66,6 +71,7 @@ files:
|
|
|
66
71
|
- lib/masks/client/stores.rb
|
|
67
72
|
- lib/masks/client/tokens.rb
|
|
68
73
|
- lib/masks/client/tracker.rb
|
|
74
|
+
- lib/masks/client/transport.rb
|
|
69
75
|
- lib/masks/client/verifier.rb
|
|
70
76
|
- lib/masks/rails.rb
|
|
71
77
|
- lib/masks/rails/authentication.rb
|