From 7a0fcce203e5f8ca522582b860ba9347c1256be8 Mon Sep 17 00:00:00 2001 From: Gabriel Bauman <967743+gabrielbauman@users.noreply.github.com> Date: Wed, 23 Jul 2025 20:31:11 -0700 Subject: [PATCH] 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. --- crates/ironrdp-web/src/session.rs | 8 +++++++- web-client/iron-remote-desktop-rdp/src/main.ts | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index 4b66f3d6..6a5416d6 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -68,6 +68,7 @@ struct SessionBuilderInner { force_clipboard_update_callback: Option, 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(); diff --git a/web-client/iron-remote-desktop-rdp/src/main.ts b/web-client/iron-remote-desktop-rdp/src/main.ts index bd14578c..7c9f0727 100644 --- a/web-client/iron-remote-desktop-rdp/src/main.ts +++ b/web-client/iron-remote-desktop-rdp/src/main.ts @@ -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); +}