[core,gateway] Make tenantid use optional

This commit is contained in:
akallabeth
2024-12-10 11:06:23 +01:00
parent 2db8f37d9a
commit f25be351b1
10 changed files with 54 additions and 9 deletions

View File

@@ -1099,8 +1099,12 @@ static BOOL client_cli_get_avd_access_token(freerdp* instance, char** token)
freerdp_settings_get_string(instance->context->settings, FreeRDP_GatewayAvdClientID);
const char* base = freerdp_settings_get_string(instance->context->settings,
FreeRDP_GatewayAzureActiveDirectory);
const char* tenantid =
freerdp_settings_get_string(instance->context->settings, FreeRDP_GatewayAvdAadtenantid);
const BOOL useTenant =
freerdp_settings_get_bool(instance->context->settings, FreeRDP_GatewayAvdUseTenantid);
const char* tenantid = "common";
if (useTenant)
tenantid =
freerdp_settings_get_string(instance->context->settings, FreeRDP_GatewayAvdAadtenantid);
if (!base || !tenantid || !client_id)
goto cleanup;

View File

@@ -3722,6 +3722,25 @@ static int parse_aad_options(rdpSettings* settings, const COMMAND_LINE_ARGUMENT_
BOOL handled = FALSE;
const char* val = ptr[x];
if (option_starts_with("use-tenantid", val))
{
PARSE_ON_OFF_RESULT bval = parse_on_off_option(val);
if (bval == PARSE_FAIL)
{
rc = COMMAND_LINE_ERROR_UNEXPECTED_VALUE;
break;
}
else
{
if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayAvdUseTenantid,
bval != PARSE_OFF))
{
rc = COMMAND_LINE_ERROR_UNEXPECTED_VALUE;
break;
}
}
continue;
}
for (size_t y = 0; y < ARRAYSIZE(amap); y++)
{
const struct app_map* cur = &amap[y];

View File

@@ -26,8 +26,8 @@
static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = {
{ "a", COMMAND_LINE_VALUE_REQUIRED, "<addin>[,<options>]", NULL, NULL, -1, "addin", "Addin" },
{ "azure", COMMAND_LINE_VALUE_REQUIRED, "[tenantid:<id>],[ad:<url>]", NULL, NULL, -1, NULL,
"AzureAD options" },
{ "azure", COMMAND_LINE_VALUE_REQUIRED, "[tenantid:<id>],[use-tenantid[:[on|off]],[ad:<url>]",
NULL, NULL, -1, NULL, "AzureAD options" },
{ "action-script", COMMAND_LINE_VALUE_REQUIRED, "<file-name>", "~/.config/freerdp/action.sh",
NULL, -1, NULL, "Action script" },
{ "admin", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, "console",

View File

@@ -495,7 +495,10 @@ struct rdp_settings
SETTINGS_DEPRECATED(ALIGN64 UINT16 ProxyPort); /* 2017 */
SETTINGS_DEPRECATED(ALIGN64 char* ProxyUsername); /* 2018 */
SETTINGS_DEPRECATED(ALIGN64 char* ProxyPassword); /* 2019 */
UINT64 padding2112[2112 - 2020]; /* 2020 */
SETTINGS_DEPRECATED(ALIGN64 BOOL GatewayAvdUseTenantid); /** 2020
* @since version 3.10.0
*/
UINT64 padding2112[2112 - 2021]; /* 2021 */
/**
* RemoteApp

View File

@@ -240,6 +240,9 @@ BOOL freerdp_settings_get_bool(const rdpSettings* settings, FreeRDP_Settings_Key
case FreeRDP_GatewayArmTransport:
return settings->GatewayArmTransport;
case FreeRDP_GatewayAvdUseTenantid:
return settings->GatewayAvdUseTenantid;
case FreeRDP_GatewayBypassLocal:
return settings->GatewayBypassLocal;
@@ -904,6 +907,10 @@ BOOL freerdp_settings_set_bool(rdpSettings* settings, FreeRDP_Settings_Keys_Bool
settings->GatewayArmTransport = cnv.c;
break;
case FreeRDP_GatewayAvdUseTenantid:
settings->GatewayAvdUseTenantid = cnv.c;
break;
case FreeRDP_GatewayBypassLocal:
settings->GatewayBypassLocal = cnv.c;
break;

View File

@@ -109,6 +109,7 @@ static const struct settings_str_entry settings_map[] = {
"FreeRDP_FrameMarkerCommandEnabled" },
{ FreeRDP_Fullscreen, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_Fullscreen" },
{ FreeRDP_GatewayArmTransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayArmTransport" },
{ FreeRDP_GatewayAvdUseTenantid, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayAvdUseTenantid" },
{ FreeRDP_GatewayBypassLocal, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayBypassLocal" },
{ FreeRDP_GatewayEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayEnabled" },
{ FreeRDP_GatewayHttpExtAuthSspiNtlm, FREERDP_SETTINGS_TYPE_BOOL,

View File

@@ -868,8 +868,12 @@ BOOL aad_fetch_wellknown(rdpAad* aad)
const char* base =
freerdp_settings_get_string(aad->rdpcontext->settings, FreeRDP_GatewayAzureActiveDirectory);
const char* tenantid =
freerdp_settings_get_string(aad->rdpcontext->settings, FreeRDP_GatewayAvdAadtenantid);
const BOOL useTenant =
freerdp_settings_get_bool(aad->rdpcontext->settings, FreeRDP_GatewayAvdUseTenantid);
const char* tenantid = "common";
if (useTenant)
tenantid =
freerdp_settings_get_string(aad->rdpcontext->settings, FreeRDP_GatewayAvdAadtenantid);
rdp->wellknown = freerdp_utils_aad_get_wellknown(aad->log, base, tenantid);
return rdp->wellknown ? TRUE : FALSE;
}

View File

@@ -170,8 +170,12 @@ static BOOL arm_fetch_wellknown(rdpArm* arm)
const char* base =
freerdp_settings_get_string(arm->context->settings, FreeRDP_GatewayAzureActiveDirectory);
const char* tenantid =
freerdp_settings_get_string(arm->context->settings, FreeRDP_GatewayAvdAadtenantid);
const BOOL useTenant =
freerdp_settings_get_bool(arm->context->settings, FreeRDP_GatewayAvdUseTenantid);
const char* tenantid = "common";
if (useTenant)
tenantid =
freerdp_settings_get_string(arm->context->settings, FreeRDP_GatewayAvdAadtenantid);
rdp->wellknown = freerdp_utils_aad_get_wellknown(arm->log, base, tenantid);
return rdp->wellknown ? TRUE : FALSE;

View File

@@ -829,6 +829,8 @@ rdpSettings* freerdp_settings_new(DWORD flags)
goto out_fail;
if (!freerdp_settings_set_string(settings, FreeRDP_GatewayAvdAadtenantid, "common"))
goto out_fail;
if (!freerdp_settings_set_bool(settings, FreeRDP_GatewayAvdUseTenantid, FALSE))
goto out_fail;
if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopPhysicalWidth, 1000))
goto out_fail;
if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopPhysicalHeight, 1000))

View File

@@ -64,6 +64,7 @@ static const size_t bool_list_indices[] = {
FreeRDP_FrameMarkerCommandEnabled,
FreeRDP_Fullscreen,
FreeRDP_GatewayArmTransport,
FreeRDP_GatewayAvdUseTenantid,
FreeRDP_GatewayBypassLocal,
FreeRDP_GatewayEnabled,
FreeRDP_GatewayHttpExtAuthSspiNtlm,