TdlQ created GUACAMOLE-2137:
-------------------------------

             Summary: Introduce HashiCorp Vault token handler (based on the KSM 
module)
                 Key: GUACAMOLE-2137
                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-2137
             Project: Guacamole
          Issue Type: Improvement
          Components: guacamole-vault
            Reporter: TdlQ
             Fix For: 1.6.1


This introduces a new module to handle HashiCorp Vault tokens. It is heavily 
inspired by and reuses a significant amount of code from the existing KSM 
module.

The main goal is to provide a dedicated, lightweight solution for fetching 
secrets from HashiCorp Vault for use in Guacamole connection parameters. This 
allows for replacing static credentials with dynamic, centrally managed secrets.
h3. Key Features & Implementation Details
 * Token Format: The module uses a new token format, 
${HASHIVAULT:path/to/secret/key}, to reference secrets stored in Vault. For 
example: Password: 
${HASHIVAULT:path/to/my/server/guacamole_connection/password}.
 * Centralized Configuration: Vault configuration is managed through a 
base64-encoded JSON object (vault_url, vault_token, cache_lifetime), which is 
stored in the HV_CONFIG parameter and can be overridden at connection groups 
level.
 * Efficient Caching: The module is optimized for performance. When multiple 
tokens reference the same Vault path (e.g., username and password from the same 
secret), it performs only a single HTTP query to Vault. Subsequent requests for 
keys within the same path are served directly from a concurrent, time-based 
cache.
 * Asynchronous Handling: All Vault queries are performed asynchronously to 
prevent blocking the connection process. This is achieved using 
CompletableFuture and a "in-flight" request caching pattern to handle 
concurrent requests for the same secret efficiently.

h3. Notable Differences and Design Choices (vs KSM)
 * Simplicity: This module is designed to be a simpler, more lightweight 
alternative to the KSM module, focusing exclusively on basic token handling. It 
intentionally lacks more advanced features.
 * Execution Order: The setAttributes() method now directly calls 
processAttributes() to ensure correct execution order, which was an issue 
observed during development.
 * User Custom Configuration: The user-defined configuration part is currently 
a placeholder. It mimics KSM's design but might be simplified or removed in the 
future if a clear use case for it does not emerge.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to