Commit Graph
100 Commits
Author SHA1 Message Date
Michael Jumper 584db45a4f GUACAMOLE-990: Enabled/disable auth failure tracking via implementations of a common interface. 2022-08-22 15:16:46 -07:00
Michael Jumper a9ed4c2982 GUACAMOLE-990: Revise guacamole-auth-ban log levels to generally always notify of problematic addresses. 2022-08-22 15:16:46 -07:00
Michael Jumper 8b981d9213 GUACAMOLE-990: Add Docker image support for guacamole-auth-ban. 2022-08-22 15:16:45 -07:00
Michael Jumper 43f65357c8 GUACAMOLE-990: Limit maximum number of tracked addresses. 2022-08-22 15:16:45 -07:00
Michael Jumper 2b19bc95da GUACAMOLE-990: Use translation string for "too many failed attempts" error. 2022-08-22 15:16:45 -07:00
Michael Jumper f9d8abcfde GUACAMOLE-990: Clear out any previous authentication token that is known to be invalid. 2022-08-22 15:16:45 -07:00
Michael Jumper 275b5bee13 GUACAMOLE-990: Add extension for automatically blocking brute-force auth attempts. 2022-08-22 09:59:06 -07:00
Michael Jumper e6a61b7223 GUACAMOLE-990: Fire auth success/failure events only after authentication has absolutely succeeded or failed, including the details of any failure.
Previously, these events were fired only after the user's identity had
been determined (or failed to be determined). If we don't wait until
after the user contexts have also been successfully obtained (or failed
to be obtained), then things like MFA will not be taken into account
for auth events.
2022-08-22 09:59:06 -07:00
Michael Jumper 0e5a3cb74f GUACAMOLE-990: The UserContext passed to redecorate() should NOT be the internal DecoratedUserContext wrapper. 2022-08-18 12:26:55 -07:00
Michael Jumper 8cc7e47de2 Merge 1.5.0 changes back to master.
Please enter a commit message to explain why this merge is necessary,
2022-07-27 23:51:48 -07:00
Mike Jumper fed176def6 GUACAMOLE-1005: Merge Docker support for configuring RemoteIPValve. 2022-07-27 23:42:11 -07:00
Mike Jumper 4b4490b45a GUACAMOLE-1629: Merge correction to handling of group cycles in KSM support. 2022-07-26 14:52:10 -07:00
Mike Jumper 5b1d39634e GUACAMOLE-1643: Merge corrections to connection group KSM config edit behavior. 2022-07-22 08:49:24 -07:00
Mike Jumper a11b9a9ae4 GUACAMOLE-1643: Merge support for KSM one-time tokens at connection group level. 2022-07-21 12:57:49 -07:00
Mike Jumper 8772207a75 GUACAMOLE-1629: Merge support for vault-specific configuration at the connection group level. 2022-07-07 10:33:42 -07:00
Mike Jumper e348d3f89a GUACAMOLE-1372: Merge support for signed/encrypted SAML requests. 2022-07-05 14:32:31 -07:00
Mike Jumper 46661eed74 GUACAMOLE-1623: Merge fix for build against Java 8 (no List.of()). 2022-06-22 20:51:59 -07:00
Mike Jumper 7d71391bb3 GUACAMOLE-1623: Merge support for extracting Windows domain information from vault-stored usernames. 2022-06-22 16:11:58 -07:00
Mike Jumper 8822db781e GUACAMOLE-1606: Merge changes correcting retrieval of user group attribute schema. 2022-06-06 09:04:48 -07:00
Mike Jumper 20fd023751 GUACAMOLE-1616: Merge correction to injection of HISTORY_UUID token for external connections. 2022-06-03 13:53:59 -07:00
Mike Jumper 612491e663 GUACAMOLE-1616: Merge support for tracking external connection history within database. 2022-05-31 20:54:31 -07:00
Mike Jumper 0a7ecff3cb GUACAMOLE-1614: Merge changes upgrading to latest jasmine-maven-plugin (no PhantomJS). 2022-05-24 14:12:52 -07:00
Michael Jumper be90de9a9d GUACAMOLE-377: Switch over to "disable-gfx" parameter (enable RDPGFX by default). 2022-05-18 15:56:39 -07:00
Michael Jumper 59ace6c493 GUACAMOLE-377: Add extension for displaying render statistics in a toolbar. 2022-05-18 15:56:39 -07:00
Michael Jumper e5dccc8657 GUACAMOLE-377: Add JavaScript API support for tracking display render statistics. 2022-05-18 15:56:39 -07:00
Michael Jumper 93d97e8c97 GUACAMOLE-377: Add parameter definition and translation for "enable-gfx". 2022-05-17 21:09:18 +00:00
Michael Jumper d6db8fac7e GUACAMOLE-377: Flush frames asynchronously with requestAnimationFrame() if possible. 2022-05-17 21:09:17 +00:00
Michael Jumper 7f707cdb04 Merge 1.5.0 changes back to master. 2022-05-02 22:21:42 +00:00
Mike Jumper ef9afb0c7d GUACAMOLE-1594: Merge updates to Java/JavaScript dependencies of webapp. 2022-05-02 15:18:30 -07:00
Michael Jumper 837a0360be GUACAMOLE-641: Clarify that null will also be returned if the List actually contains null. 2022-04-27 22:01:01 +00:00
Michael Jumper 741cf481d6 GUACAMOLE-641: Ensure empty strings within KSM record fields are handled as if the field value is absent. 2022-04-27 19:22:04 +00:00
Mike Jumper ae1d5d38ab GUACAMOLE-1584: Merge additional home page section header IDs to ease third-party CSS rules. 2022-04-21 16:32:05 -07:00
Michael Jumper 98abadaef5 GUACAMOLE-462: Do not attempt to retrieve recordings for records with null UUIDs. 2022-03-31 19:56:50 +00:00
Michael Jumper c45bd9f7d3 GUACAMOLE-462: Ensure compatibility with 1.x extensions is maintained. 2022-03-31 18:07:29 +00:00
Michael Jumper ba54a3aa18 GUACAMOLE-462: Request correct sort order from REST API when searching history. 2022-03-31 18:06:11 +00:00
Michael Jumper b9e79d99c5 GUACAMOLE-1562: Update chained tunnel UUID when underlying tunnel receives UUID. 2022-03-25 21:37:53 +00:00
Michael Jumper c555fe6411 GUACAMOLE-1562: Ensure "ping" response is not erroneously handled as the tunnel UUID. 2022-03-25 21:37:17 +00:00
Michael Jumper a608fa274d GUACAMOLE-1550: Allow TOTP key to be cleared by setting its generation status.
The previous functionality provided two checkboxes: one for requesting
that the TOTP key be cleared, and another for directly managing whether
the TOTP key has been confirmed. This is confusing as checkboxes
normally represent state, but the "reset" checkbox here is representing
an action.

Instead, both checkboxes should represent state: whether the key has
been generated and whether the generated key has been confirmed.
2022-03-11 19:05:04 +00:00
Michael Jumper 357e585edd GUACAMOLE-462: Declare variables with "const" where appropriate. 2022-03-03 22:25:02 +00:00
Michael Jumper 531711493e GUACAMOLE-462: Add in-app player for session recordings. 2022-03-03 22:25:02 +00:00
Michael Jumper 2428c7eb14 GUACAMOLE-462: Report size of files downloaded via the static HTTP tunnel. 2022-03-02 23:05:02 +00:00
Michael Jumper 389bbece05 GUACAMOLE-462: Store REST API history entry directly in ConnectionHistoryEntryWrapper, rather than duplicating properties. 2022-03-02 23:05:02 +00:00
Michael Jumper c3aad01be8 GUACAMOLE-462: Continue playback only after keyframe import.
If this is not done, asynchronous decoding of the keyframe via text()
may complete AFTER replay continues, effectively ignoring the keyframe,
leaving currentFrame untouched, and unnecessarily replaying
instructions.
2022-03-02 20:37:41 +00:00
Michael Jumper c4b8a13968 GUACAMOLE-462: State of recording after resetting to a keyframe is the index of that keyframe, not necessarily the requested seek index.
Further instructions may need to be replayed after seeking to the
keyframe in order to reach the desired frame index.
2022-03-02 20:37:37 +00:00
Michael Jumper 27c7ab782f GUACAMOLE-462: Do not continue an outstanding state import if its corresponding seek has been cancelled. 2022-03-02 20:37:30 +00:00
Michael Jumper d4899f102f GUACAMOLE-462: Clear out pending display operations and fully reset when importing state. 2022-03-02 20:37:25 +00:00
Michael Jumper a27bd2694a GUACAMOLE-462: Allow pending display frames to be cancelled. 2022-03-02 20:37:18 +00:00
Michael Jumper 8ebe13d085 GUACAMOLE-1545: Ensure tunnel "onload" fires only for true state changes.
Previously, the state of the tunnel implementations was initialized to
"CONNECTING", which is incorrect and may result in (1) initial state
changes to "CONNECTING" not firing "onstatechange" and (2) the state
change to "CLOSED" incorrectly firing when initially connecting,
despite there not being an established connection.
2022-03-02 20:35:52 +00:00
Michael Jumper 26a9246e32 GUACAMOLE-462: Correct missing import for JavaDoc reference. 2022-02-28 00:30:30 +00:00
Michael Jumper f83ee0c60b GUACAMOLE-462: Add ${HISTORY_PATH} convenience token for automatically placing recordings in the expected location. 2022-02-28 00:30:30 +00:00
Michael Jumper a123eacab5 GUACAMOLE-462: Add extension for automatically associated session recordings, logs, etc. with history entries. 2022-02-28 00:30:30 +00:00
Michael Jumper c386845f24 GUACAMOLE-462: Retrieve individual database history records directly (by ID). 2022-02-28 00:30:30 +00:00
Michael Jumper 449fcb828e GUACAMOLE-462: Allow individual records to be identified and retrieved directly. 2022-02-28 00:30:30 +00:00
Michael Jumper 6874f9c6bd GUACAMOLE-462: Add JavaScript objects for REST API representations of activity logs. 2022-02-28 00:30:30 +00:00
Michael Jumper b80d8da1bb GUACAMOLE-462: Migrate user/connection record mappers to common base interface. 2022-02-28 00:30:30 +00:00
Michael Jumper 45ac06e0d0 GUACAMOLE-462: Create connection history records for in-progress connections.
Besides restoring historically-provided functionality, the ID generated
by the database for connection history records is needed to generate a
deterministic UUID that can be injected into connection configurations
with ${HISTORY_UUID}. Having such a token allows session recordings to
be given names that can be reliably matched with history records.
2022-02-28 00:30:30 +00:00
Michael Jumper fb3aeb7628 GUACAMOLE-462: Ensure activity record UUID becomes available/updated if underlying model is assigned an ID. 2022-02-28 00:30:30 +00:00
Michael Jumper d367add785 GUACAMOLE-462: Allow logs associated with history entries to be retrieved via REST. 2022-02-28 00:30:30 +00:00
Michael Jumper 0cca98d0b2 GUACAMOLE-462: Directly support associating session recordings with history entries at API level. 2022-02-28 00:30:30 +00:00
Michael Jumper 538ac5d934 GUACAMOLE-462: Include history record UUID as token. 2022-02-28 00:30:30 +00:00
Michael Jumper 32c7ab03ad GUACAMOLE-462: Generate consistent history record UUIDs based on database record IDs. 2022-02-28 00:30:30 +00:00
Michael Jumper a5c58e221b GUACAMOLE-462: Add convenience classes for decorating ActivityRecordSets and their records. 2022-02-28 00:30:30 +00:00
Michael Jumper 9cbf4f045f GUACAMOLE-462: Add API-level support for associating data with history records. 2022-02-28 00:30:30 +00:00
Michael Jumper dc98633897 GUACAMOLE-462: Separate Attributes interface into read-only and read/write variations. 2022-02-28 00:30:30 +00:00
Mike Jumper 402197863f GUACAMOLE-1539: Merge correction to Docker entrypoint auth sanity check. 2022-02-27 14:55:03 -08:00
Michael Jumper a096abd735 GUACAMOLE-896: Always flush instruction buffer upon end of static tunnel. 2022-02-23 09:28:48 -08:00
Michael Jumper d0257122bb GUACAMOLE-896: Leverage Blobs for storage of recording keyframes. 2022-02-14 09:21:22 -08:00
Mike Jumper f82b7e884c GUACAMOLE-1322: Merge Docker image support for SAML. 2022-02-11 17:23:43 -08:00
Michael Jumper b8da13243d GUACAMOLE-896: Ensure "seeking" class not erroneously assigned if seek() finishes immediately. 2022-02-11 17:17:44 -08:00
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