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: [], allow_query_params: false) ⇒ 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: [], allow_query_params: false) ⇒ ApiKey
Initialize with a list of valid API keys
16 17 18 19 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 16 def initialize(keys: [], allow_query_params: false) @valid_keys = Set.new(keys.map(&:to_s)) @allow_query_params = allow_query_params end |
Instance Attribute Details
#valid_keys ⇒ Object (readonly)
Returns the value of attribute valid_keys.
11 12 13 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 11 def valid_keys @valid_keys end |
Instance Method Details
#add_key(key) ⇒ Object
Add a valid API key
23 24 25 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 23 def add_key(key) @valid_keys << key.to_s end |
#authenticate(request) ⇒ Hash, false
Authenticate a request using API key
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 36 def authenticate(request) api_key = extract_api_key(request) return false unless api_key&.length&.positive? if secure_key_match?(api_key) { api_key: api_key } 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
29 30 31 |
# File 'lib/vector_mcp/security/strategies/api_key.rb', line 29 def remove_key(key) @valid_keys.delete(key.to_s) end |