Class: KeycloakApiRails::PublicKeyCachedResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/keycloak-api-rails/public_key_cached_resolver.rb

Defined Under Namespace

Classes: RealmCache

Constant Summary collapse

FAILED_REFRESH_RETRY_DELAY_IN_SECONDS =
10
MAX_CACHED_REALMS =
64

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_client, realm_id, public_key_cache_ttl, logger = nil) ⇒ PublicKeyCachedResolver

Returns a new instance of PublicKeyCachedResolver.



59
60
61
62
63
64
65
66
67
68
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 59

def initialize(http_client, realm_id, public_key_cache_ttl, logger = nil)
  @http_client          = http_client
  @realm_id             = realm_id
  @configured_realms    = configured_realms(realm_id)
  @public_key_cache_ttl = public_key_cache_ttl
  @logger               = logger
  @caches               = {}
  @caches_mutex         = Mutex.new
  @refusal_logged       = false
end

Class Method Details

.from_configuration(http_client, configuration) ⇒ Object



70
71
72
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 70

def self.from_configuration(http_client, configuration)
  new(http_client, configuration.realm_id, configuration.public_key_cache_ttl, configuration.logger)
end

Instance Method Details

#cached_public_key_retrieved_at(realm_id = nil) ⇒ Object

Keep this method backward-compatible for testing



79
80
81
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 79

def cached_public_key_retrieved_at(realm_id = nil)
  cache_for(realm_id || default_realm).cached_public_key_retrieved_at
end

#find_public_keys(realm_id = nil) ⇒ Object



74
75
76
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 74

def find_public_keys(realm_id = nil)
  cache_for(realm_id || default_realm).find_public_keys(@public_key_cache_ttl, @logger)
end