Class: KeycloakApiRails::PublicKeyCachedResolver

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

Constant Summary collapse

FAILED_REFRESH_RETRY_DELAY_IN_SECONDS =
10

Instance Attribute Summary collapse

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.



7
8
9
10
11
12
13
14
15
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 7

def initialize(http_client, realm_id, public_key_cache_ttl, logger = nil)
  @resolver                       = PublicKeyResolver.new(http_client, realm_id)
  @public_key_cache_ttl           = public_key_cache_ttl
  @logger                         = logger
  @cached_public_keys             = nil
  @cached_public_key_retrieved_at = nil
  @last_refresh_failure_at        = nil
  @mutex                          = Mutex.new
end

Instance Attribute Details

#cached_public_key_retrieved_atObject (readonly)

Returns the value of attribute cached_public_key_retrieved_at.



5
6
7
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 5

def cached_public_key_retrieved_at
  @cached_public_key_retrieved_at
end

Class Method Details

.from_configuration(http_client, configuration) ⇒ Object



17
18
19
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 17

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

Instance Method Details

#find_public_keysObject



21
22
23
24
25
26
# File 'lib/keycloak-api-rails/public_key_cached_resolver.rb', line 21

def find_public_keys
  @mutex.synchronize do
    refresh_public_keys if public_keys_are_outdated?
    @cached_public_keys
  end
end