class Keratin::AuthN::FetchingKeychain
Public Class Methods
new(issuer:, ttl:)
click to toggle source
# File lib/keratin/authn/fetching_keychain.rb, line 3 def initialize(issuer:, ttl:) @cache = LruRedux::TTL::ThreadSafeCache.new(25, ttl) @issuer = issuer.chomp('/') end
Public Instance Methods
[](kid)
click to toggle source
# File lib/keratin/authn/fetching_keychain.rb, line 8 def [](kid) @cache.getset(kid){ fetch(kid) } end
clear()
click to toggle source
# File lib/keratin/authn/fetching_keychain.rb, line 12 def clear @cache.clear end
Private Instance Methods
fetch(kid)
click to toggle source
# File lib/keratin/authn/fetching_keychain.rb, line 16 def fetch(kid) keys = JSON::JWK::Set.new( JSON.parse( Net::HTTP.get(URI.parse("#{@issuer}/jwks")) ) ) keys.find{|k| k['use'] == 'sig' && (kid.blank? || kid == k['kid']) } end