class FmRest::Cloud::ClarisIdTokenManager

Constants

AWS_REGION
COGNITO_CLIENT_ID
COGNITO_POOL_ID
TOKEN_STORE_PREFIX

Public Class Methods

new(settings) click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 16
def initialize(settings)
  @settings = settings
end

Public Instance Methods

expire_token() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 33
def expire_token
  token_store.delete(token_store_key)
end
fetch_token() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 20
def fetch_token
  if token = token_store.load(token_store_key)
    return token
  end

  tokens = get_cognito_tokens

  token_store.store(token_store_key, tokens.id_token)
  token_store.store(token_store_key(:refresh), tokens.refresh_token) if tokens.refresh_token

  tokens.id_token
end

Private Instance Methods

build_aws_client() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 65
def build_aws_client
  options = { region: @settings.aws_region || AWS_REGION }
  options[:http_proxy] = @settings.proxy if @settings.proxy?
  Aws::CognitoIdentityProvider::Client.new(options)
end
cognito_srp_client() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 54
def cognito_srp_client
  @cognito_srp_client ||=
    Aws::CognitoSrp.new(
      username: @settings.username!,
      password: @settings.password!,
      pool_id: @settings.cognito_pool_id || COGNITO_POOL_ID,
      client_id: @settings.cognito_client_id || COGNITO_CLIENT_ID,
      aws_client: build_aws_client
    )
end
get_cognito_tokens() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 39
def get_cognito_tokens
  # Use refresh mechanism first if we have a refresh token
  refresh_cognito_token || cognito_srp_client.authenticate
end
refresh_cognito_token() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 44
def refresh_cognito_token
  return unless refresh_token = token_store.load(token_store_key(:refresh))

  begin
    cognito_srp_client.refresh_tokens(refresh_token)
  rescue Aws::CognitoIdentityProvider::Errors::NotAuthorizedException
    nil
  end
end
token_store_key(token_type = :id) click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 71
def token_store_key(token_type = :id)
  "#{TOKEN_STORE_PREFIX}:#{token_type}:#{@settings.username!}"
end
token_store_option() click to toggle source
# File lib/fmrest/cloud/claris_id_token_manager.rb, line 75
def token_store_option
  @settings.token_store || FmRest.token_store
end