class SoarAuthenticationToken::JwtTokenGenerator
Constants
- DEFAULT_CONFIGURATION
Public Class Methods
new(configuration)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 12 def initialize(configuration) @configuration = merge_with_default_configuration(configuration) validate_configuration @private_key = OpenSSL::PKey::EC.new(@configuration['private_key']) end
Public Instance Methods
generate(authenticated_identifier:, flow_identifier: nil)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 22 def generate(authenticated_identifier:, flow_identifier: nil) token_meta = generate_meta(authenticated_identifier) token = encode(token_meta) add_token_to_store(token_meta,flow_identifier) [token, token_meta] end
inject_store_provider(store_provider)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 18 def inject_store_provider(store_provider) @store_provider = store_provider end
Private Instance Methods
add_token_to_store(meta,flow_identifier)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 55 def add_token_to_store(meta,flow_identifier) @store_provider.add( token_identifier: meta['token_identifier'], authenticated_identifier: meta['authenticated_identifier'], token_issue_time: meta['token_issue_time'], token_expiry_time: meta['token_expiry_time'], flow_identifier: flow_identifier) end
encode(meta)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 40 def encode(meta) JWT.encode(meta, @private_key, 'ES512') end
generate_meta(authenticated_identifier)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 31 def generate_meta(authenticated_identifier) current_time = Time.now { 'authenticated_identifier' => authenticated_identifier, 'token_issue_time' => current_time.utc.iso8601(3), 'token_expiry_time' => (current_time + @configuration['expiry']).utc.iso8601(3), 'token_identifier' => SecureRandom.hex(32) } end
merge_with_default_configuration(configuration)
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 50 def merge_with_default_configuration(configuration) configuration = {} unless configuration Hash.deep_merge(DEFAULT_CONFIGURATION,configuration) end
validate_configuration()
click to toggle source
# File lib/soar_authentication_token/providers/jwt_token_generator.rb, line 44 def validate_configuration raise "'private_key' must be configured" unless @configuration['private_key'] raise "'expiry' must be configured" unless @configuration['expiry'] raise "'expiry' must be an integer" unless Integer(@configuration['expiry']) end