[ 
https://issues.apache.org/jira/browse/GUACAMOLE-2137?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman updated GUACAMOLE-2137:
-------------------------------------
    Fix Version/s: 1.7.0
                       (was: 1.6.1)

> 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
>            Priority: Major
>             Fix For: 1.7.0
>
>
> 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