Per von Zweigbergk created GUACAMOLE-2045: ---------------------------------------------
Summary: Add ability to prompt for credentials for non-NLA connections Key: GUACAMOLE-2045 URL: https://issues.apache.org/jira/browse/GUACAMOLE-2045 Project: Guacamole Issue Type: Improvement Components: RDP Affects Versions: 1.5.5 Reporter: Per von Zweigbergk In the current version of Guacamole, if no credentials are provided for an RDP connection, the default action is to connect the user to a full Windows desktop where the user may enter their credentials. However, when NLA is enabled, guacd will instead request that guacamole-client prompts the user for a password in a web form. This is because a username and password is required before establishing a desktop connection when NLA is enabled. In some ways, this user experience is superior, because it allows for easy copy/paste or form filling by password managers, whereas entering a password on the desktop does not allow for such an experience. For this reason, it would be useful if there would be a way to configure Guacamole, so that such prompting happens on all types of connections, even if FreeRDP doesn't callback requesting it (such as for NLA). I've done a quick survey of the source code as it stands. From my understanding the current implementation works like this: In guacd, rdp.c, in the function guac_rdp_handle_connection, rdp_inst->Authenticate is set to rdp_freerdp_authenticate. rdp_freerdp_authenticate (also defined in rdp.c) is called by FreeRDP when FreeRDP determines that credential prompting is required. A quick survey of the FreeRDP source code seems to indicate that this prompting only happens where it's required, in NLA mode. There does not appear to be any way to hook FreeRDP to always call this callback. My proposed implementation strategy is: * Add a user-configurable setting to guacd, named something like a boolean in the rdp section named always_prompt_for_credentials. * Check this global setting in guac_rdp_handle_connection, and call rdp_freerdp_authenticate early in this function if this is set. * Update documentation for guacd to reflect the presence of this setting. I'm happy to take a stab at patching guacd according to the strategy above, if this approach is deemed sufficient. (It would probably be even better if it were added as a connection-level parameter, but that would require changes across both guacamole-server and guacd, and thus increase the scope of work significantly, so I'd rather not have to do that if I can get away with a simpler solution.) -- This message was sent by Atlassian Jira (v8.20.10#820010)