Michael Jumper
2c8bc58402
GUACAMOLE-896: Avoid XHR-related memory limitations by using Fetch API.
...
The Fetch API allows us to read HTTP responses as true streams, without
building an in-memory string. We can the buffer things ourselves as we
see fit, including as a Blob that can dynamically leverage disk storage
for larger data.
2022-02-11 17:17:44 -08:00
Michael Jumper
f559f5ca70
GUACAMOLE-896: Add JavaScript UTF-8 parser implementation.
2022-02-11 17:17:44 -08:00
Michael Jumper
a97404b6ad
GUACAMOLE-896: Update session recording player to support efficient reading from Blobs.
2022-02-11 17:09:57 -08:00
Michael Jumper
ed14fa3ecf
GUACAMOLE-641: Use "KeyPair" typed field for private key only if non-empty.
...
An SSH server record in KSM has an associated "KeyPair" field, but this
field need not be set. If unset, the current logic ignores the rest of
the record and assumes there is no private key at all. Instead, the
standard fallbacks of locating an attached PEM file, locating an
alternative password field, etc. should be used.
2022-01-30 11:33:14 -08:00
Michael Jumper
96c8c7de61
GUACAMOLE-641: Correct old references to the temporarily-removed Azure support.
2022-01-25 19:50:17 -08:00
Michael Jumper
cc8b3f734c
GUACAMOLE-1523: Resync ONLY local clipboard to internal clipboard.
...
The clipboard service previously and incorrectly resynced the internal
clipboard with itself. This had the effect of forcing a resync of the
internal clipboard contents to the external, local clipboard, clearing
that clipboard of whatever was copied before.
2022-01-25 16:41:16 -08:00
Mike Jumper
6b24394c9b
GUACAMOLE-1507: Merge support for configuring the 'extension-priority' property via Docker environment variables.
2022-01-23 18:42:45 -08:00
Michael Jumper
df386bfd10
GUACAMOLE-1508: Ensure extension JarFile is always properly closed.
2022-01-23 15:07:40 -08:00
Michael Jumper
d1bbfd18ab
GUACAMOLE-1509: Add contextual CSS classes to containers/elements that are otherwise ambiguous.
2022-01-23 12:20:46 -08:00
Michael Jumper
a7cf01064a
GUACAMOLE-1509: Add status-specific CSS classes to connection notifications.
2022-01-23 12:20:46 -08:00
Michael Jumper
a688bc507c
GUACAMOLE-1509: Add name attribute to all applicable fields.
2022-01-23 12:20:46 -08:00
Michael Jumper
c93b05ca23
GUACAMOLE-1509: Automatically generate CSS classes for forms and fields.
2022-01-23 12:20:46 -08:00
Michael Jumper
bba94c0f94
GUACAMOLE-1511: Revert incorrect recursive constructor invocation.
...
A previous iteration of the whitespace-trimming changes involved an
additional constructor variation. After removing that portion, the
original constructor for PropertiesGuacamoleProperties was not restored
correctly, and now recursively invokes itself.
2022-01-23 11:57:18 -08:00
Michael Jumper
979505bb58
GUACAMOLE-641: Remove Azure Key Vault extension until license text can be obtained.
2022-01-22 22:25:05 -08:00
Michael Jumper
e89a65586c
GUACAMOLE-641: Alternatively download .pem files for private keys.
2022-01-22 22:25:05 -08:00
Michael Jumper
86d1de5f2c
GUACAMOLE-641: Automatically pull Guacamole properties from vault.
2022-01-22 22:25:05 -08:00
Michael Jumper
46501f4b63
GUACAMOLE-641: Correct standard vs. custom field logic for complex retrievals.
...
When retrieving a contextual field like "passphrase", which does not
have a typed representation different from "password" or "hidden", the
contexts where the field's identity is truly known should be preferred
("password" field of a record with a "keypair" field, which MUST be the
key passphrase). When venturing outside well-known contexts, custom
fields should be preferred when their standard counterparts would
already have well-established meanings that differ from the requested
secret (again: "password" of a record with "keypair").
If this is not done, things like retrieving the private key from a
"Login" record fail, as one of the possible storage mechanisms for a
private key is a hidden or password field, which pulls the user's
password instead of their key. In this case, the correct behavior is
to pull the typed value ("keypair") if available, and use custom fields
ONLY otherwise, as those fields have labels that can establish context.
In no other case would it be reliable to assume that a hidden/password
field actually contains a private key.
2022-01-22 22:25:05 -08:00
Michael Jumper
1cfd2ee835
GUACAMOLE-641: Index records by username ONLY if not related to a hostname.
...
Doing otherwise would mean that a particular user would never be able
to be associated with a specific password/key by their username if they
have any explicit server-specific account.
2022-01-22 22:25:05 -08:00
Michael Jumper
87b26fe2c8
GUACAMOLE-641: Use record service to resolve hostname/username of records for later lookup.
2022-01-22 22:25:04 -08:00
Michael Jumper
55b7e6f867
GUACAMOLE-641: Additionally match against KSM custom fields based on labels.
2022-01-22 22:25:04 -08:00
Michael Jumper
f8f0779d7a
GUACAMOLE-641: Manually extract password value from KeeperRecord.
...
Simply calling getPassword() does not currently work correctly, as the
implementation of getPassword() assumes there will be at least one
value if the field is present. This results in an
ArrayIndexOutOfBoundsException for records with empty passwords:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:659)
at java.util.ArrayList.get(ArrayList.java:435)
at com.keepersecurity.secretsManager.core.KeeperRecord.getPassword(SecretsManager.kt:134)
...
2022-01-22 22:25:04 -08:00
Michael Jumper
b6e6800c0d
GUACAMOLE-641: Consider null token mapping (blank YAML) to be empty.
2022-01-22 22:25:04 -08:00
Michael Jumper
aee1b13b2b
GUACAMOLE-641: Include KSM extension in vault distribution.
2022-01-22 22:25:04 -08:00
Michael Jumper
62863f8a0b
GUACAMOLE-641: Log possible ambiguous record retrievals at debug level.
2022-01-22 22:25:04 -08:00
Michael Jumper
c5ae027225
GUACAMOLE-641: Add user- and gateway-specific tokens.
2022-01-22 22:25:04 -08:00
Michael Jumper
b655866057
GUACAMOLE-641: Consider existing tokens when injecting tokens from vault.
2022-01-22 22:25:04 -08:00
Michael Jumper
7641fa9222
GUACAMOLE-641: Allow TokenInjecting* implementations to consider values of existing tokens.
2022-01-22 22:25:04 -08:00
Michael Jumper
d2f5596015
GUACAMOLE-641: Automatically provide KEEPER_SERVER_* tokens based on connection parameters.
2022-01-22 22:25:04 -08:00
Michael Jumper
30f24de808
GUACAMOLE-641: Allow vault implementations to automatically provide tokens based on connection parameters (without YAML mapping).
2022-01-22 22:25:04 -08:00
Michael Jumper
d0bd4b52d6
GUACAMOLE-641: Add general service for retrieving data from Keeper records.
2022-01-22 22:25:04 -08:00
Michael Jumper
d0043e34dd
GUACAMOLE-641: Allow token mapping file to not exist.
...
Some tokens may be standardized or specific to the implementation, and
may not need to be defined in YAML.
2022-01-22 22:25:04 -08:00
Michael Jumper
8bedbe746c
GUACAMOLE-641: Add initial draft implementation of KSM vault support for Guacamole.
2022-01-22 22:25:04 -08:00
Michael Jumper
786430612e
GUACAMOLE-641: Canonicalize individual, tokenized components of secret names rather than the whole name.
...
In the event that a secret name is structured, such as the URL-like
notation used by Keeper Secrets Manager, canonicalizing/encoding the
entire name could result in the name itself becoming invalid. Only the
portions that come from tokens should be canonicalized.
2022-01-22 22:25:04 -08:00
Michael Jumper
16cb9ed69b
GUACAMOLE-641: Expand CONNECTION_USERNAME and CONNECTION_HOSTNAME tokens only if corresponding parameters are non-empty.
2022-01-22 22:25:04 -08:00
Michael Jumper
4d3b2a9435
GUACAMOLE-641: Obtain connection hostname and/or username for vault tokens via privileged access, if possible.
2022-01-22 22:25:04 -08:00
Michael Jumper
5aba0cd09d
GUACAMOLE-641: Read token/secret mapping from YAML instead of JSON.
2022-01-22 22:25:04 -08:00
Michael Jumper
b57578ad8e
GUACAMOLE-641: Rename vault-specific username token to "USERNAME" to avoid confusion with "GUAC_USERNAME".
...
The "GUAC_USERNAME" token provided by the webapp is based off the
username provided by the user when they authenticated. The username
token provided by the vault extensions uses the username stored with
the user's corresponding object, which may not be the same.
2022-01-22 22:25:04 -08:00
Michael Jumper
f99b3a3213
GUACAMOLE-641: Rename guacamole-auth-vault to guacamole-vault (does not provide auth).
2022-01-22 22:25:04 -08:00
Michael Jumper
2df24bf911
GUACAMOLE-641: Document return type of VaultUserContext.resolve().
2022-01-22 22:25:04 -08:00
Michael Jumper
0359aa6225
GUACAMOLE-641: Follow widely-accepted public static final Logger idiom.
...
From https://github.com/apache/guacamole-client/pull/336#discussion_r241549475 :
>
> SLF4J formerly recommended that instance variables be used
> (non-static), but no longer takes either stance:
> https://www.slf4j.org/faq.html#declared_static
>
> If we have to pick something to be the standard going forward, I'd
> say let's stick with the accepted idiom of `private static final`
> loggers, with the exception being where it's actually necessary to
> not be `static` (dependency injection).
>
2022-01-22 22:25:04 -08:00
Michael Jumper
e0fce54056
GUACAMOLE-641: Correct typo in documentation - "AzureKeyVaultAuthenticationiProviderModule" should be "AzureKeyVaultAuthenticationProviderModule".
2022-01-22 22:25:04 -08:00
Michael Jumper
3dbb821baf
GUACAMOLE-641: Retrieve tokens asynchronously and in parallel.
2022-01-22 22:25:04 -08:00
Michael Jumper
2f946d962b
GUACAMOLE-641: Allow tokens to be easily injected on-demand.
2022-01-22 22:25:04 -08:00
Michael Jumper
e56becc258
GUACAMOLE-641: Retrieve secrets from Azure Key Vault.
2022-01-22 22:25:04 -08:00
Michael Jumper
cab29bacf7
GUACAMOLE-641: Automatically cache requests for secrets from the vault.
2022-01-22 22:25:04 -08:00
Michael Jumper
6145a79f5d
GUACAMOLE-641: Add generic vault support with an initial Azure Key Vault implementation.
2022-01-22 22:25:04 -08:00
Michael Jumper
0ac67b8cf8
GUACAMOLE-641: Provide strict filtering mode for TokenFilter which disallows undefined tokens.
2022-01-22 22:25:04 -08:00
Michael Jumper
19920eeed1
GUACAMOLE-641: Allow token retrieval/generation to fail with an error.
2022-01-22 22:25:04 -08:00
Michael Jumper
60008bb4f0
GUACAMOLE-1511: Automatically trim whitespace from property values.
2022-01-21 08:10:56 -08:00
Michael Jumper
27c4935e36
GUACAMOLE-1508: Automatically delete temporary files on webapp shutdown.
2022-01-20 16:03:17 -08:00
Michael Jumper
3fb309bbcf
GUACAMOLE-1508: Bundle libraries for all extensions as nested .jar files.
2022-01-20 16:03:17 -08:00
Michael Jumper
6548d00da5
GUACAMOLE-1508: Add support for bundling libraries within extensions as nested .jar files.
2022-01-20 16:03:17 -08:00
Mike Jumper
1b3361e006
GUACAMOLE-1394: Merge support for setting OpenID groups claim type in Docker image.
2022-01-03 22:01:14 -08:00
Mike Jumper
6a9cd798bf
GUACAMOLE-1275: Merge correction to user home page permission check.
2022-01-03 21:09:29 -08:00
Michael Jumper
c8ffbbdbab
GUACAMOLE-957: Add license information for SnakeYAML version required by updated Jackson.
2021-12-27 10:56:27 -08:00
Michael Jumper
d8ce01318e
GUACAMOLE-773: Update JavaScript dependencies to latest stable, compatible versions.
2021-12-26 17:50:43 -08:00
Michael Jumper
b8d23962d6
GUACAMOLE-773: Update Java dependencies to latest stable, compatible versions.
2021-12-26 17:50:43 -08:00
Michael Jumper
f1e9ee6876
GUACAMOLE-1364: Correct rendering of SSO provider list during invalid login animation.
...
The SSO provider list unexpectedly shrinks when the invalid login
"shake" animation plays due to the use of "display: table-row" vs. the
login form's own use of "display: table-cell". Migrating the SSO
provider list to a simple absolutely-positioned div corrects this and
matches the way the Guacamole version is rendered.
2021-12-26 00:00:38 -08:00
Michael Jumper
b66c964848
GUACAMOLE-478: Add parameter definition and translations for "normalize-clipboard".
2021-12-25 00:48:25 -08:00
Michael Jumper
841b659a20
Merge 1.4.0 changes back to master.
2021-12-24 14:52:16 -08:00
Mike Jumper
5de1063302
GUACAMOLE-1261: Merge correction to handling of generated settings URLs.
2021-12-24 14:51:49 -08:00
Michael Jumper
1ca1161a68
GUACAMOLE-986: Update documentation of all parameters/returns to specify non-nullable and/or primitive types where appropriate.
2021-12-18 23:03:57 -08:00
Michael Jumper
5e9e215356
GUACAMOLE-1411: Bump version numbers to 1.4.0.
2021-12-11 16:27:00 -08:00
Michael Jumper
68dd871e24
GUACAMOLE-1064: Add Norwegian keymap parameter value and translation.
2021-12-10 23:43:36 -08:00
Michael Jumper
c232c17b71
GUACAMOLE-680: Navigate user back to home screen upon clicking "re-login".
2021-12-10 23:34:06 -08:00
Michael Jumper
b6696b9dba
GUACAMOLE-1364: Extract common SSO resource for IdP redirect.
2021-12-03 21:18:04 -08:00
Michael Jumper
0e9860ecf7
GUACAMOLE-1364: Allow both traditional username/password and SSO.
2021-12-03 20:36:34 -08:00
Michael Jumper
7dc0b3b509
GUACAMOLE-1364: Extract common base SSO classes.
2021-12-03 20:33:32 -08:00
Michael Jumper
a6b38bec62
GUACAMOLE-1364: Remove unnecessary separate dist .tar.gz for SSO extensions (now distributed within common .tar.gz).
2021-11-25 19:01:57 -08:00
Michael Jumper
ba93d17265
GUACAMOLE-1364: Correct naming of SAML auth field and translation.
2021-11-25 18:44:46 -08:00
Michael Jumper
817f19290d
GUACAMOLE-1364: Unify translations of SSO extensions.
2021-11-25 18:44:46 -08:00
Michael Jumper
36a02c1f90
GUACAMOLE-1364: Refactor all SSO extensions beneath common base.
2021-11-25 18:44:46 -08:00
Michael Jumper
cce63e74c4
GUACAMOLE-1364: Do not rely on Collectors.toUnmodifiableMap() as it is not part of Java 8.
2021-11-22 15:11:40 -08:00
Michael Jumper
76caea0fa8
GUACAMOLE-1364: Actually inject parameter tokens derived from SAML.
2021-11-22 12:30:16 -08:00
Michael Jumper
d360d2a9ef
GUACAMOLE-1364: Clean up overall logic of SAML authentication flow.
2021-11-22 12:30:16 -08:00
Michael Jumper
bc0b14a7c5
GUACAMOLE-957: Default bind password should be bind password, not DN (correct copypasta).
2021-11-13 17:21:48 -08:00
Michael Jumper
1bec3e76c5
GUACAMOLE-957: Clear out cached ldap-servers.yml if it is deleted.
2021-11-13 17:05:11 -08:00
Michael Jumper
a056218950
GUACAMOLE-957: Use guacamole.properties alone for LDAP configuration if ldap-servers.yml is empty.
2021-11-13 16:49:00 -08:00
Mike Jumper
fc3748fd87
GUACAMOLE-1446: Merge corrections to various typos in documentation.
2021-10-26 18:43:04 -07:00
Michael Jumper
38b3a19ace
GUACAMOLE-956: Clarify relation of ContainerRequest to the HTTP request that resulted in an exception.
2021-10-25 03:05:17 -07:00
Michael Jumper
0597358dde
GUACAMOLE-956: Decouple tunnel UUID from HTTP tunnel session identification.
2021-10-23 22:29:39 -07:00
Michael Jumper
1a0802f4a3
GUACAMOLE-956: Provide alternative means of deleting the current token that does not specify the token within the URL.
2021-10-23 22:13:53 -07:00
Michael Jumper
aacf63857c
GUACAMOLE-956: Use "Guacamole-Token" header in favor of "token" query parameter when invoking REST API from client.
2021-10-23 22:13:53 -07:00
Michael Jumper
5fdfb56c8b
GUACAMOLE-956: Automatically pull token from HTTP header or query parameter.
2021-10-23 22:13:53 -07:00
Michael Jumper
00f83145a3
GUACAMOLE-957: Leverage capturing group in user match regex to determine Guacamole LDAP user identities.
2021-10-23 20:19:51 -07:00
Michael Jumper
b45fc9b6e5
GUACAMOLE-957: Evaluate default value of LDAP configuration only if provided value is null.
...
The function supplying the default value may throw a GuacamoleException,
thus the function providing that default should only be invoked when
actually necessary.
2021-10-23 20:19:51 -07:00
Michael Jumper
0f96d5e122
GUACAMOLE-957: Continue to use cached version of LDAP YAML if an error occurs.
2021-10-23 20:19:51 -07:00
Michael Jumper
d80ab47c97
GUACAMOLE-957: Use case insensitive matching for LDAP YAML regular expressions by default.
2021-10-23 20:19:51 -07:00
Michael Jumper
a216ec902a
GUACAMOLE-957: Match any user for LDAP YAML by default.
2021-10-23 20:19:51 -07:00
Michael Jumper
5a757d0418
GUACAMOLE-957: Add support for configuring the general network timeout for LDAP.
2021-10-23 20:19:51 -07:00
Michael Jumper
55437faad0
GUACAMOLE-957: Use guacamole.properties for LDAP YAML defaults.
2021-10-23 20:19:51 -07:00
Michael Jumper
160d29df95
GUACAMOLE-957: Define all default LDAP configuration values in central location.
2021-10-23 20:19:51 -07:00
Michael Jumper
f322dc3f3e
GUACAMOLE-957: Cache LDAP configuration YAML until modified.
2021-10-23 20:19:51 -07:00
Michael Jumper
0fc7c03d70
GUACAMOLE-957: Allow single-element array values for YAML LDAP configuration to be specified as simple strings.
2021-10-23 20:19:51 -07:00
Michael Jumper
91a057cad9
GUACAMOLE-957: Choose LDAP configurations based on usernames.
2021-10-23 20:19:51 -07:00
Michael Jumper
49a4a6c7a0
GUACAMOLE-957: Support reading multiple LDAP server configurations from "ldap-servers.yml".
2021-10-23 20:19:51 -07:00
Michael Jumper
278bfa17ae
GUACAMOLE-957: Allow each user to be associated with multiple LDAP servers.
2021-10-23 20:19:51 -07:00
Michael Jumper
07b443257f
GUACAMOLE-957: Refactor LDAP configuration such that it may be user-specific.
2021-10-23 20:19:51 -07:00
Michael Jumper
a06802c320
Merge 1.4.0 changes back to master.
2021-10-22 22:31:00 -07:00
Mike Jumper
85cef39954
GUACAMOLE-1130: Merge limitation of LDAP query scope to only required attributes.
2021-10-22 22:29:53 -07:00