feat(web): add enableCredssp extension (#878)

Allows users to disable CredSSP/NLA, which is otherwise enabled by default.
This is necessary to connect to target hosts bound to AzureAD/Entra domains.
In this case, user authentication is handled in the interactive session.
This commit is contained in:
Gabriel Bauman
2025-07-23 23:31:11 -04:00
committed by GitHub
parent e7393f50d0
commit 7a0fcce203
2 changed files with 11 additions and 1 deletions
+7 -1
View File
@@ -68,6 +68,7 @@ struct SessionBuilderInner {
force_clipboard_update_callback: Option<js_sys::Function>,
use_display_control: bool,
enable_credssp: bool,
}
impl Default for SessionBuilderInner {
@@ -95,6 +96,7 @@ impl Default for SessionBuilderInner {
force_clipboard_update_callback: None,
use_display_control: false,
enable_credssp: true,
}
}
}
@@ -216,6 +218,7 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {
|pcb: String| { self.0.borrow_mut().pcb = Some(pcb) };
|kdc_proxy_url: String| { self.0.borrow_mut().kdc_proxy_url = Some(kdc_proxy_url) };
|display_control: bool| { self.0.borrow_mut().use_display_control = display_control };
|enable_credssp: bool| { self.0.borrow_mut().enable_credssp = enable_credssp };
}
self.clone()
@@ -272,7 +275,10 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {
info!("Connect to RDP host");
let config = build_config(username, password, server_domain, client_name, desktop_size);
let mut config = build_config(username, password, server_domain, client_name, desktop_size);
let enable_credssp = self.0.borrow().enable_credssp;
config.enable_credssp = enable_credssp;
let (input_events_tx, input_events_rx) = mpsc::unbounded();
@@ -35,3 +35,7 @@ export function displayControl(enable: boolean): Extension {
export function kdcProxyUrl(url: string): Extension {
return new Extension('kdc_proxy_url', url);
}
export function enableCredssp(enable: boolean): Extension {
return new Extension('enable_credssp', enable);
}