GUACAMOLE-2196: OpenBao Vault Integration Extension#1143
Open
subbareddyalamur wants to merge 1 commit intoapache:mainfrom
Open
GUACAMOLE-2196: OpenBao Vault Integration Extension#1143subbareddyalamur wants to merge 1 commit intoapache:mainfrom
subbareddyalamur wants to merge 1 commit intoapache:mainfrom
Conversation
24da733 to
c0449db
Compare
Contributor
|
@subbareddyalamur Please:
|
c0449db to
ecca633
Compare
Author
@necouchman Done. |
Member
corentin-soriano
left a comment
There was a problem hiding this comment.
Thank you for this contribution.
I've added a few questions to the code.
| logger.warn("Password field not found in OpenBao response"); | ||
| return null; | ||
|
|
||
| } catch (Exception e) { |
Member
There was a problem hiding this comment.
Could we catch a more specific exception?
| } else { | ||
| logger.warn("Password not found in OpenBao for user: {}", username); | ||
| } | ||
| } catch (Exception e) { |
Member
There was a problem hiding this comment.
Could we catch a more specific exception?
|
|
||
| logger.info("Fetching secret from OpenBao: {}", fullUrl); | ||
|
|
||
| try (CloseableHttpClient httpClient = HttpClients.createDefault()) { |
Member
There was a problem hiding this comment.
Is there a specific reason to re-instantiate an HTTP client for each request?
Comment on lines
+74
to
+77
| String serverUrl = configService.getServerUrl(); | ||
| String token = configService.getToken(); | ||
| String mountPath = configService.getMountPath(); | ||
| String kvVersion = configService.getKvVersion(); |
Member
There was a problem hiding this comment.
What will happen if the URL, path, or token is not defined or is empty?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.