GUACAMOLE-2196: OpenBao Vault Integration Extension #1143
+1,085
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request: OpenBao Vault Integration Extension
Summary
This PR adds a new vault extension for integrating Apache Guacamole with OpenBao, an open-source secrets management platform (fork of HashiCorp Vault).
JIRA Issue
GUACAMOLE-XXXX (To be created at: https://issues.apache.org/jira/browse/GUACAMOLE-2196)
Motivation
OpenBao is a community-driven fork of HashiCorp Vault, maintained under the Linux Foundation. As organizations adopt OpenBao for secrets management, there is a need for native Guacamole integration to automatically retrieve connection credentials from OpenBao vaults. This extension enables:
Implementation Details
Architecture
The extension follows the same architectural pattern as the existing Keeper Secrets Manager (KSM) vault extension, utilizing the
guacamole-vault-baseframework. Key components:VaultAuthenticationProviderVaultSecretServicefor token resolution and secret retrievalguacamole.propertiesToken System
The extension supports two token patterns:
${OPENBAO_SECRET}: Replaced with the password retrieved from OpenBao${GUAC_USERNAME}: Replaced with the logged-in Guacamole usernameSecret Path Mapping
The extension maps Guacamole usernames directly to OpenBao KV v2 secret paths:
Example secret structure in OpenBao:
{ "data": { "data": { "username": "john", "password": "SecurePassword123" } } }Configuration
The extension requires minimal configuration in
guacamole.properties:Hardcoded defaults:
2(KV v2 secrets engine)5000ms10000msFiles Added
Files Modified
extensions/guacamole-vault/pom.xml: Addedguacamole-vault-openbaomoduleDependencies
New dependencies added for the OpenBao module:
org.apache.httpcomponents.client5:httpclient5:5.2.1- HTTP client for REST API communicationcom.google.code.gson:gson:2.10.1- JSON parsingBoth dependencies are shaded into the final JAR.
Testing
Build Testing
The module builds successfully with Maven:
cd extensions/guacamole-vault mvn clean install -DskipTestsBuild output:
target/guacamole-vault-openbao-1.6.1.jarFunctional Testing
Tested with:
Test scenario:
${GUAC_USERNAME}${OPENBAO_SECRET}/v1/rdp-creds/data/subbaResult: ✅ All tests passed successfully
Compatibility
Security Considerations
Token Storage: OpenBao tokens are stored in
guacamole.properties. Administrators should:guacamole.propertiesTLS: Production deployments should use HTTPS:
Network Security: OpenBao should only be accessible from Guacamole servers
Audit Logging: Enable OpenBao audit logging to track credential access
Documentation
Breaking Changes
None. This is a new extension module that does not modify any existing code.
Checklist
Questions for Reviewers
Future Enhancements
Potential future improvements (not in this PR):
Related Work
This extension is inspired by and follows the same architectural patterns as:
guacamole-vault-ksm)Additional Notes
OpenBao project: https://openbao.org/
OpenBao GitHub: https://github.com/openbao/openbao
Ready for Review: This PR is ready for initial review. Will update JIRA issue number once created.