Apache Guacamole 1.2.0 is an archived release, and was originally released on 2020-06-28. The latest release of Apache Guacamole is 1.5.5.
Apache Guacamole is split into two subprojects: "guacamole-client", the HTML5 web application which serves the Guacamole client to users, and "guacamole-server", the remote desktop proxy which the web application communicates with. The source code for each of these may be downloaded below.
You must verify the integrity of any downloaded files using the OpenPGP signatures we provide with each release. The signatures should be verified against the KEYS file, which contains the OpenPGP keys of Apache Guacamole's Release Managers. Checksums of each released file are also provided.
Filename | Signatures / Hashes |
---|---|
guacamole-client-1.2.0.tar.gz | PGP SHA-256 |
guacamole-server-1.2.0.tar.gz | PGP SHA-256 |
If you do not wish to build Apache Guacamole entirely from source, pre-built versions of the web application (.war) and all extensions are provided here in binary form for convenience. Please note that guacamole-server must still be built and installed from source.
The 1.2.0 release features support for SAML 2.0, Wake-on-LAN, and a new interface for easily switching between multiple active connections. The general behavior of the login interface has also been improved, as has the flexibility of the TOTP support, which may now be used even with user accounts that do not yet exist in the database.
The 1.2.0 release is compatible with older 1.x components. You should upgrade older components to 1.2.0 when possible, however things should continue to work correctly in the interim:
Similar to existing support for CAS and OpenID Connect, Guacamole now provides support for SAML 2.0, allowing any identity provider implementing this standard to function as a source of identity.
Note that this new extension only deals with determining the identity of users that have authenticated via SAML (and redirecting unauthenticated users to the configured identity provider so that they may authenticate). The details of the connections available to each user must be provided via another extension, such as the database authentication.
Automatically activating machines using Wake-on-LAN is now supported for VNC, RDP, SSH, and telnet connections. Additional connection parameters are available which define how the Wake-on-LAN “Magic Packet” should be broadcast. If enabled on a connection, the “Magic Packet” will be sent before attempting to connect, signaling the desired machine to power up.
Users with access to multiple connections may now select from those connections within the Guacamole menu while already using another connection. The connection name that is displayed at the top of the Guacamole menu functions as a drop-down menu from which any accessible connection may be selected.
Once multiple connections are running, connections that are running in the background appear as thumbnails in a collapsible panel on the lower-right corner of the screen. These thumbnails update in real-time, and clicking on a thumbnail will switch to that connection without disconnecting.
When the Guacamole login dialog is displayed, the first blank login field will now automatically be focused, allowing failed logins to be more easily retried.
In deployments where the login process may be lengthy, such as when dependent on a response from a relatively slow database or LDAP server, the login form will now disable itself and fade out to indicate that the form has been submitted and the login attempt is being processed.
Guacamole’s TOTP support can now be used alongside extensions like LDAP, so long as a database is also configured. The former caveat that TOTP users must have “Change own password” permission within the database no longer applies, and Guacamole’s various supported databases can now be configured to automatically create user accounts for users that have successfully authenticated.
Guacamole now supports username/password authentication for VNC in addition to the standard password-only authentication. VNC servers that require a username in addition to a password should now be accessible using Guacamole.
Copy and paste can now be individually disabled by the administrator on a per-connection basis, allowing data transfer through the clipboard to be tightly restricted.
File transfer has always been disabled unless explicitly enabled, however this support can now be enabled while also disabling download or upload, allowing file transfer to be restricted to a single direction.
Guacamole’s LDAP support now allows configuration of the type of groups used to
dictate access. While Guacamole previously assumed use of the groupOfNames
object class and its member
attribute, other object classes like posixGroup
may now be used, and their corresponding member attributes may be defined.
guacenc
support for MPEG-4 containersThe optional guacenc
utility that is part of guacamole-server will now
produce video within MPEG-4 container files, not just raw, containerless MPEG-4
video streams.
For MySQL and PostgreSQL servers that require SSL/TLS connections, Guacamole
now provides options to configure this. Additional properties within
guacamole.properties
may be specified to allow/require use of SSL, as well as
to configure the level of certificate validation.
While MySQL and MariaDB share a common origin and are generally compatible, their corresponding JDBC drivers have diverged, and Guacamole’s MySQL/MariaDB support previously assumed that the MySQL driver would be used.
Guacamole now supports the MariaDB version of “Connector/J” in addition to the MySQL version.
SQL Server supports deploying multiple instances on the same server, with each
additional instance identified by its own unique name. If using SQL Server, and
your deployment uses named instances, the name of the instance containing the
Guacamole database can now be specified using the sqlserver-instance
property.
The web interface of Guacamole has been translated into Czech and Japanese. These languages will now be automatically selected if accessing Guacamole from a browser where either is set as the preferred language, and can be manually selected within Guacamole’s preferences.
Keymaps have been added to better support RDP servers which use the Belgian French, Hungarian, or Latin American keyboard layouts. As always, bear in mind that the client side of Guacamole is independent of keyboard layout. Additional keyboard layouts for RDP are mainly of benefit if:
If your RDP server is set to US English and supports Unicode events, it should not be necessary to select a specific layout. The user’s local keyboard should simply work, regardless of whether it matches the layout of the RDP server.
The existing French translation has been updated to take into account recent changes to the web interface, adding French translations for portions of text which previously would have been displayed in English as a fallback.
Several regressions were identified following the Apache Guacamole 1.1.0 release which were due to the massive migration from FreeRDP 1.x to FreeRDP 2.0.0 and primarily affected use of RemoteApp, Hyper-V, and VirtualBox. These regressions have now been fixed, and RDP connections involving these technologies should work as expected.
Following changes to the JavaScript API exposed by browsers for accessing audio input streams, support for audio input within Guacamole ceased to function correctly. This was due to:
navigator.mediaDevices.getUserMedia()
functionBoth causes have been addressed, and audio input should now function correctly.
Users of iOS and iPadOS mobile devices reported erratic behavior of the Guacamole interface following a system update, ultimately resulting in inability to interact with remote desktops using touch mouse emulation. These issues were determined to be due to changes in iOS Safari’s handling of the browser viewport, and have been corrected by updating Guacamole’s interface to be independent of the aspects that changed.
When logging into Guacamole using Firefox, the “Enter” key could become
effectively stuck if used to submit the login form. This was due to the lack of
a corresponding keyup
event for the key used to submit the form. This issue
has been corrected such that any tracked keyboard state will not be maintained
when Guacamole navigates between any of its pages.
Guacamole’s RDP support relies on dynamic keymap translation to ensure that keyboard behavior is always dictated by the user’s own keyboard layout, not the keyboard layout of the RDP server. This translation did not function correctly when Shift and Caps Lock were combined, as the remote state of Caps Lock was not properly tracked.
This has been corrected, and Guacamole will now automatically take Caps Lock into account when determining whether additional modifiers need to be pressed (and whether any pressed modifiers need to be released).
The German keymap has also been corrected to include a definition for the non-dead tilde key.
While Guacamole will automatically use TLS for VNC servers that require it, the proper locking callbacks required for multithreaded use of TLS were not set, resulting in unstable behavior. These callbacks are now correctly specified, and connections to VNC servers requiring TLS should function correctly.
Beware that these callbacks are only supported in newer versions of libvncclient. If the version of libvncclient installed lacks support for these callbacks, a warning will be displayed when building guacamole-server noting that TLS may not work correctly:
checking for rfbClient.LockWriteToTLS... no
checking for rfbClient.UnlockWriteToTLS... no
configure: WARNING:
--------------------------------------------
This version of libvncclient lacks support
for TLS locking. VNC connections that use
TLS may experience instability as documented
in GUACAMOLE-414
Guacamole is intended to render empty balancing groups as if they were connections, keeping the balancing nature of those groups opaque to non-administrative users. A regression in the 0.9.10-incubating release broke this behavior, causing empty balancing groups to render as any empty non-balancing group would. This has been corrected, and empty balancing groups should now appear identical to normal connections.
A bug in the query used by Guacamole’s SQL Server support caused searches against the connection history to fail, instead producing the following error in the logs:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'username'.
The error in the relevant SQL query has been corrected, and searches against the connection history should now work as expected.
In certain cases, Guacamole’s OpenID support would redirect the user back to
their IDP in a loop, despite the OpenID support being correctly configured and
the IDP behaving correctly. This was due to incorrect handling of the
id_token
parameter within the URL, causing Guacamole to behave as if the
id_token
were not present at all. This handling has been corrected, and users
should not encounter a redirect loop if OpenID is correctly configured.
A bug in Guacamole’s RADIUS support resulted in the Reply-Message =
portion
of the RADIUS challenge being presented to the user as if it were part of the
actual challenge message. This has been fixed. Only the challenge message
itself should now be displayed.
Guacamole’s RADIUS support was intended to support for MS-CHAPv1 and MS-CHAPv2 authentication protocols, however this would fail if the JVM in use lacked support for the MD4 digest algorithm:
No such RADIUS algorithm: MD4 MessageDigest not available
An implementation of MD4 is now bundled with the RADIUS support, and both MS-CHAPv1 and MS-CHAPv2 should work as expected.