GUACAMOLE-2057: Add configuration parameters for supporting Kerberos authentication for RDP.#581
GUACAMOLE-2057: Add configuration parameters for supporting Kerberos authentication for RDP.#581necouchman wants to merge 1 commit into
Conversation
…authentication for RDP.
08026b5 to
5c1032c
Compare
|
|
||
| /** | ||
| * The authentication package to use based on the underlying FreeRDP support | ||
| * for alternatives to NTML. Currently FreeRDP2 only supports NTLM, while |
| switch(guac_settings->auth_pkg) { | ||
|
|
||
| case GUAC_AUTH_PKG_NTLM: | ||
| freerdp_settings_set_string(rdp_settings, FreeRDP_AuthenticationPackageList, "ntlm,!kerberos"); | ||
| break; | ||
|
|
||
| case GUAC_AUTH_PKG_KERBEROS: | ||
| freerdp_settings_set_string(rdp_settings, FreeRDP_AuthenticationPackageList, "!ntlm,kerberos"); | ||
| break; | ||
|
|
||
| case GUAC_AUTH_PKG_ANY: | ||
| freerdp_settings_set_string(rdp_settings, FreeRDP_AuthenticationPackageList, "ntlm,kerberos"); | ||
| break; | ||
|
|
||
| } | ||
|
|
||
| if (guac_settings->kdc_url != NULL) | ||
| freerdp_settings_set_string(rdp_settings, FreeRDP_KerberosKdcUrl, guac_strdup(guac_settings->kdc_url)); | ||
|
|
||
| if (guac_settings->kerberos_cache != NULL) | ||
| freerdp_settings_set_string(rdp_settings, FreeRDP_KerberosCache, guac_strdup(guac_settings->kerberos_cache)); |
There was a problem hiding this comment.
The specific Kerberos code should only be enabled with FreeRDP >= 3.x to avoid compilation errors in 2.x.
| * When kerberos authentication is in use, the path to the kerberos ticket | ||
| * cache, relative to GUACAMOLE_HOME. If not specified, the default system | ||
| * cache of the underlying system on which guacd is running will be used. |
There was a problem hiding this comment.
It doesn't look to me like the path is evaluated relative to GUACAMOLE_HOME, but passed to FreeRDP unaltered (and then interpreted by FreeRDP relative to somewhere?).
| /** | ||
| * The authentication package to use based on the underlying FreeRDP support | ||
| * for alternatives to NTML. Currently FreeRDP2 only supports NTLM, while | ||
| * FreeRDP3 introduces support for Kerberos and continues to support NTLM. | ||
| * The default is to negotiate between guacd and the remote server. | ||
| */ | ||
| IDX_AUTH_PKG, |
There was a problem hiding this comment.
Should this be part of the security parameter, rather than separate?
There was a problem hiding this comment.
These are two different parameters. We may need to choose an explicit value for each
This test seems to work: However, What needs to be removed are these assignments when not |
Adds the required parameters to configure the FreeRDP library to force Kerberos and configure a couple of the parameters related to that, if required. I have tested the changes against both servers with NTLM still enabled and against one where NTLM is disabled, and it seems to work, but others should feel free to test.
I do need one bit of help with this - I have not added the detection of the Kerberos support to the
configure.acfile, yet, as I'm struggling to figure out how to do that. In my mind, it needs 2-3 checks:FreeRDP_AuthenticationPackageListsetting. This is probably the biggest thing I'm struggling with, as this setting is part of anenumin one of the FreeRDP header files, but I'm having trouble finding any guidance on how to generate an autoconf check for an enum member? Any hints on the best way to do that would be appreciated.buildconfig.hfile, within the constantFREERDP_BUILD_CONFIGthat showsWITH_KRB5=ON, but, again, I'm struggling with how to get autoconf to check for this, or identify a sane method or member to use with one of the other autoconf checks.