Subba Reddy Alamuru created GUACAMOLE-2196:
----------------------------------------------
Summary: OpenBao Vault Integration Extension
Key: GUACAMOLE-2196
URL: https://issues.apache.org/jira/browse/GUACAMOLE-2196
Project: Guacamole
Issue Type: New Feature
Components: guacamole-vault
Reporter: Subba Reddy Alamuru
Add OpenBao Vault integration extension for Apache Guacamole
*Description:*
This enhancement adds a new vault integration extension that enables Apache
Guacamole to retrieve connection credentials from OpenBao
([https://openbao.org/]) at connection time, eliminating the need for users to
manually enter passwords.
*Overview:*
OpenBao is an open-source fork of HashiCorp Vault that provides secrets
management capabilities. This extension integrates Guacamole with OpenBao's KV
v2 secrets engine, automatically retrieving credentials when users connect to
remote desktop sessions.
*Key Features:*
* Automatic credential retrieval from OpenBao KV v2 secrets engine
* Token-based resolution using {{${OPENBAO_SECRET}}} and {{${GUAC_USERNAME}}}
patterns
* Simple configuration via guacamole.properties
* Username-based secret path mapping
* Secure token-based authentication with OpenBao API
* Docker container support with {{OPENBAO_}} environment variable prefix
*Implementation Details:*
The extension follows the existing guacamole-vault-base framework pattern
(similar to the KSM extension) and includes:
* OpenBaoAuthenticationProvider - Main authentication provider
* OpenBaoSecretService - Implements token resolution and secret retrieval
* OpenBaoClient - HTTP client for OpenBao REST API communication
* OpenBaoConfigurationService - Configuration management
* Support classes for directory and attribute services
*Configuration:*
Required properties in guacamole.properties:
{{openbao-server-url:
[http://openbao.example.com:8200|http://openbao.example.com:8200/]}}
{{openbao-token: s.YourTokenHere}}
{{openbao-mount-path: guacamole-credentails }}
{{}}
{{{}{}}}{*}Usage Example:{*}
When creating a connection, use token patterns:
* Username: {{${GUAC_USERNAME}}}
* Password: {{${OPENBAO_SECRET}}}
The extension maps Guacamole usernames to OpenBao secret paths:
{{Guacamole username: "john"}}
{{OpenBao secret path: /v1/guacamole-credentails/data/john}}
*Technical Specifications:*
* Language: Java
* HTTP Client: Apache HttpClient 5.2.1
* JSON Parser: Gson 2.10.1
* Secrets Engine: OpenBao KV v2
* Connection Timeout: 5000ms (hardcoded)
* Request Timeout: 10000ms (hardcoded)
*Files Modified/Added:*
* {{extensions/guacamole-vault/pom.xml}} - Added openbao module
* {{extensions/guacamole-vault/modules/guacamole-vault-openbao/*}} - New
extension module
* {{guacamole-docker/build.d/010-map-guacamole-extensions.sh}} - Added Docker
mapping
*Testing Performed:*
* Successful Maven build with Apache RAT license validation
* Successful compilation with {{-Werror}} flag
* Manual testing with OpenBao dev server
* Verification of token resolution and credential retrieval
*Security Considerations:*
* Uses token-based authentication with OpenBao
* Supports HTTPS for production deployments
* Follows principle of least privilege for token permissions
* Audit logging recommended via OpenBao audit backend
*Documentation:*
Comprehensive README.md included with:
* Installation instructions
* Configuration examples
* Troubleshooting guide
* Security best practices
* Example deployment scenario
*Compatibility:*
* Guacamole Version: 1.6.x
* OpenBao Version: 2.0.0+ (tested with 2.4.4)
* Java Version: 21+
*Benefits:*
* Centralizes credential management in OpenBao
* Reduces password fatigue for end users
* Enables credential rotation without user intervention
* Provides audit trail for credential access
* Follows established Guacamole vault extension patterns
--
This message was sent by Atlassian Jira
(v8.20.10#820010)