Class: VectorMCP::Security::Strategies::ApiKey
- Inherits:
-
Object
- Object
- VectorMCP::Security::Strategies::ApiKey
- 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
-
#valid_keys ⇒ Object
readonly
Returns the value of attribute valid_keys.
Instance Method Summary collapse
-
#add_key(key) ⇒ Object
Add a valid API key.
-
#authenticate(request) ⇒ Hash, false
Authenticate a request using API key.
-
#configured? ⇒ Boolean
Check if any keys are configured.
-
#initialize(keys: []) ⇒ ApiKey
constructor
Initialize with a list of valid API keys.
-
#key_count ⇒ Integer
Get count of configured keys (for debugging).
-
#remove_key(key) ⇒ Object
Remove an API key.
Constructor Details
#initialize(keys: []) ⇒ ApiKey
Initialize with a list 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_keys ⇒ Object (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
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
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
49 50 51 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 49 def configured? !@valid_keys.empty? end |
#key_count ⇒ Integer
Get count of configured keys (for debugging)
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
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 |