class SoarAuthenticationToken::RemoteTokenGenerator
Public Class Methods
new(configuration)
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 6 def initialize(configuration) @configuration = configuration set_configuration_defaults validate_configuration end
Public Instance Methods
generate(authenticated_identifier:, flow_identifier: nil)
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 16 def generate(authenticated_identifier:, flow_identifier: nil) attempt = 0 begin Timeout::timeout(@configuration['timeout']) do client = authenticated_client(authenticated_identifier,flow_identifier) validate_and_extract_token_from_response(client.request) end rescue Timeout::Error attempt += 1 retry if attempt < @configuration['attempts'] raise end end
inject_store_provider(store_provider)
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 12 def inject_store_provider(store_provider) #ignore the store provider since this generator does not use a store end
Private Instance Methods
authenticated_client(authenticated_identifier,flow_identifier)
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 37 def authenticated_client(authenticated_identifier,flow_identifier) client = AuthenticatedClient::Client.new client.url = @configuration['generator-url'] client.token = @configuration['generator-client-auth-token'] client.verb = :post client.parameters = {'flow_identifier' => flow_identifier} client.body = { 'authenticated_identifier' => authenticated_identifier } client end
set_configuration_defaults()
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 32 def set_configuration_defaults @configuration['timeout'] ||= 3 @configuration['attempts'] ||= 2 end
validate_and_extract_token_from_response(response)
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 47 def validate_and_extract_token_from_response(response) raise "Failure generating token with token generation service. Code #{response.code}" if '200' != response.code body = JSON.parse(response.body) raise 'Failure generating token by token service' if 'success' != body['status'] raise 'Token service did not provide token' if body['data'].nil? or body['data']['token'].nil? [body['data']['token'], body['data']['token_meta']] end
validate_configuration()
click to toggle source
# File lib/soar_authentication_token/providers/remote_token_generator.rb, line 55 def validate_configuration raise "'generator-url' must be configured" unless @configuration['generator-url'] raise "'timeout' must be configured" unless @configuration['timeout'] raise "'timeout' must be an integer" unless Integer(@configuration['timeout']) raise "'attempts' must be configured" unless @configuration['attempts'] raise "'attempts' must be an integer" unless Integer(@configuration['attempts']) end