rack-cloudflare-jwt 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rack/cloudflare_jwt/auth.rb +23 -8
- data/lib/rack/cloudflare_jwt/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b2687d696920c000108afefaef5a1ca3362a1abee3a02d70394dbf58d3853c4
|
4
|
+
data.tar.gz: b70a5704eb4617eda9e0c7da2e16931dd259b7106394f74f8f62dc2d01771ad6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0d36f13a6ad4d5dbff4b389026f45c14a1952540058d616d859d60e4016dcb35a2c3899b42a93cd15204e233b267f9687c3664df4199f71e980b48fc85b1ce9
|
7
|
+
data.tar.gz: f0e6d960ae41120b05d71888d92bc134202186b539126753c0d51d60b34a6a6d964383b809fea8cf63353b4cf499b2556350201c3f14d1ee7fcfc0369853b477
|
@@ -172,9 +172,7 @@ module Rack
|
|
172
172
|
# @return [Array<OpenSSL::PKey::RSA>] the public keys.
|
173
173
|
def public_keys(env)
|
174
174
|
host = env[HEADER_HTTP_HOST]
|
175
|
-
|
176
|
-
keys = cache.fetch([self.class.name, '#secrets', host], expires_in: 600) { fetch_public_keys(host) }
|
177
|
-
keys.map do |jwk_data|
|
175
|
+
fetch_public_keys_cached(host).map do |jwk_data|
|
178
176
|
::JWT::JWK.import(jwk_data).keypair
|
179
177
|
end
|
180
178
|
end
|
@@ -191,18 +189,35 @@ module Rack
|
|
191
189
|
[]
|
192
190
|
end
|
193
191
|
|
194
|
-
# Private: Get
|
192
|
+
# Private: Get cached public keys.
|
195
193
|
#
|
196
|
-
#
|
197
|
-
|
198
|
-
|
194
|
+
# Store a keys in the cache only 10 minutes.
|
195
|
+
#
|
196
|
+
# @param host [String] The host.
|
197
|
+
#
|
198
|
+
# @return [Array<Hash>] the public keys.
|
199
|
+
def fetch_public_keys_cached(host)
|
200
|
+
key = [self.class.name, '#secrets', host].join('_')
|
201
|
+
|
202
|
+
if defined? Rails
|
203
|
+
Rails.cache.fetch(key, expires_in: 600) { fetch_public_keys(host) }
|
204
|
+
elsif defined? Padrino
|
205
|
+
keys = Padrino.cache[key]
|
206
|
+
keys || Padrino.cache.store(key, fetch_public_keys(host), expires: 600)
|
207
|
+
else
|
208
|
+
fetch_public_keys(host)
|
209
|
+
end
|
199
210
|
end
|
200
211
|
|
201
212
|
# Private: Get a logger.
|
202
213
|
#
|
203
214
|
# @return [ActiveSupport::Logger] the logger.
|
204
215
|
def logger
|
205
|
-
Rails
|
216
|
+
if defined? Rails
|
217
|
+
Rails.logger
|
218
|
+
elsif defined? Padrino
|
219
|
+
Padrino.logger
|
220
|
+
end
|
206
221
|
end
|
207
222
|
end
|
208
223
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-cloudflare-jwt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksei Vokhmin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -196,7 +196,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
|
-
|
199
|
+
rubyforge_project:
|
200
|
+
rubygems_version: 2.7.8
|
200
201
|
signing_key:
|
201
202
|
specification_version: 4
|
202
203
|
summary: Rack middleware that provides authentication based on CloudFlare JSON Web
|