Class: SoarAuthenticationToken::JwtTokenValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/soar_authentication_token/providers/jwt_token_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ JwtTokenValidator

Returns a new instance of JwtTokenValidator.



6
7
8
9
10
11
12
# File 'lib/soar_authentication_token/providers/jwt_token_validator.rb', line 6

def initialize(configuration)
  @configuration = configuration
  set_configuration_defaults
  validate_configuration
  @public_key = OpenSSL::PKey::EC.new(@configuration['public_key'])
  @public_key.private_key = nil
end

Instance Method Details

#inject_store_provider(store_provider) ⇒ Object



14
15
16
# File 'lib/soar_authentication_token/providers/jwt_token_validator.rb', line 14

def inject_store_provider(store_provider)
  @store_provider = store_provider
end

#validate(authentication_token:, flow_identifier: nil) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/soar_authentication_token/providers/jwt_token_validator.rb', line 18

def validate(authentication_token:,flow_identifier: nil)
  meta = decode_token_meta(authentication_token)
  return rejection_result(reason: "Expired token <#{meta['token_expiry_time']}> for <#{meta['authenticated_identifier']}>") if token_expired?(meta)
  return rejection_result(reason: "Unknown token for <#{meta['authenticated_identifier']}>") unless token_exist_in_store?(meta,flow_identifier)
  success_result(token_meta: meta)
rescue JWT::VerificationError, JWT::DecodeError
  rejection_result(reason: 'Token decode/verification failure')
end