Class: VectorMCP::Security::Strategies::ApiKey

Inherits:
Object
  • Object
show all
Defined in:
lib/vector_mcp/security/strategies/api_key.rb

Overview

API Key authentication strategy Supports multiple key formats and storage methods

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(keys: []) ⇒ ApiKey

Initialize with a list of valid API keys

Parameters:

  • keys (Array<String>) (defaults to: [])

    array of valid API keys



13
14
15
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 13

def initialize(keys: [])
  @valid_keys = Set.new(keys.map(&:to_s))
end

Instance Attribute Details

#valid_keysObject (readonly)

Returns the value of attribute valid_keys.



9
10
11
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 9

def valid_keys
  @valid_keys
end

Instance Method Details

#add_key(key) ⇒ Object

Add a valid API key

Parameters:

  • key (String)

    the API key to add



19
20
21
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 19

def add_key(key)
  @valid_keys << key.to_s
end

#authenticate(request) ⇒ Hash, false

Authenticate a request using API key

Parameters:

  • request (Hash)

    the request object

Returns:

  • (Hash, false)

    user info hash or false if authentication failed



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 32

def authenticate(request)
  api_key = extract_api_key(request)
  return false unless api_key&.length&.positive?

  if @valid_keys.include?(api_key)
    {
      api_key: api_key,
      strategy: "api_key",
      authenticated_at: Time.now
    }
  else
    false
  end
end

#configured?Boolean

Check if any keys are configured

Returns:

  • (Boolean)

    true if keys are available



49
50
51
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 49

def configured?
  !@valid_keys.empty?
end

#key_countInteger

Get count of configured keys (for debugging)

Returns:

  • (Integer)

    number of configured keys



55
56
57
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 55

def key_count
  @valid_keys.size
end

#remove_key(key) ⇒ Object

Remove an API key

Parameters:

  • key (String)

    the API key to remove



25
26
27
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 25

def remove_key(key)
  @valid_keys.delete(key.to_s)
end