Skip to content

Commit cdaafee

Browse files
committed
do not cache JWKS when kid not found
1 parent 9f47724 commit cdaafee

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

lib/json/jwk/set/fetcher.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ class Cache
66
def fetch(cache_key, options = {})
77
yield
88
end
9+
10+
def delete(cache_key, options = {}); end
911
end
1012

1113
def self.logger
@@ -72,7 +74,12 @@ def self.fetch(jwks_uri, kid:, auto_detect: true, **options)
7274
)
7375

7476
if auto_detect
75-
jwks[kid] or raise KidNotFound
77+
if jwks[kid]
78+
jwks[kid]
79+
else
80+
cache.delete(cache_key)
81+
raise KidNotFound
82+
end
7683
else
7784
jwks
7885
end

spec/json/jwk/set/fetcher_spec.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ def fetch(cache_key, options = {})
6868
yield
6969
end
7070
end
71+
72+
def delete(cache_key)
73+
# ignore
74+
end
7175
end
7276

7377
let(:jwks_uri) { CustomCache::JWKS_URI }
@@ -109,8 +113,16 @@ def fetch(cache_key, options = {})
109113

110114
context 'when unknown' do
111115
let(:kid) { 'unknown' }
116+
let(:cache_key) do
117+
[
118+
'json:jwk:set',
119+
OpenSSL::Digest::MD5.hexdigest(jwks_uri),
120+
kid
121+
].collect(&:to_s).join(':')
122+
end
112123

113-
it "should not request to jwks_uri" do
124+
it do
125+
expect(JSON::JWK::Set::Fetcher.cache).to receive(:delete).with(cache_key)
114126
expect do
115127
mock_json :get, jwks_uri, 'jwks' do
116128
subject

0 commit comments

Comments
 (0)