Skip to content

fix(mstsgu): use native SSPI for gateway auth - #1840

Draft
Marc-André Moreau (mamoreau-devolutions) wants to merge 2 commits into
masterfrom
copilot/native-gateway-http-auth
Draft

fix(mstsgu): use native SSPI for gateway auth#1840
Marc-André Moreau (mamoreau-devolutions) wants to merge 2 commits into
masterfrom
copilot/native-gateway-http-auth

Conversation

@mamoreau-devolutions

Copy link
Copy Markdown
Contributor

Use native Windows SSPI with TLS endpoint binding for regular RD Gateway HTTP Negotiate and NTLM authentication.

Fall back to portable authentication when native TLS binding is unavailable.

Use native Windows SSPI with TLS endpoint binding for regular RD\nGateway HTTP Negotiate and NTLM authentication.\n\nFall back to portable authentication when native TLS binding is unavailable.
Copilot AI balanced review requested due to automatic review settings August 30, 2026 00:13
@mamoreau-devolutions

Copy link
Copy Markdown
Contributor Author

Validated against the authorized gateway with strict TLS: the native SSPI WebSocket-upgrade flow completed with 101 Switching Protocols.

A subsequent MS-TSGU handshake requested unsupported SmartCard extended authentication; no SmartCard credentials are configured, so full session establishment remains blocked. This is outside the HTTP-authentication scope.

Note

LLM-assisted content (no human feedback).

@github-actions github-actions Bot added maintainer-required Maintainer review or intervention is required risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny size/L Size: up to 899 counted lines and 20 files; exceeds M in either measure labels Aug 30, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Windows-native SSPI authentication with TLS endpoint binding for RD Gateway, retaining portable authentication as fallback.

Changes:

  • Adds TLS channel-binding extraction and native SSPI authentication.
  • Preserves WebSocket keys across authentication retries.
  • Updates tests, documentation, dependencies, and changelog.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
crates/ironrdp-tls/tests/native_tls.rs Tests channel-binding encoding.
crates/ironrdp-tls/src/native_tls.rs Builds SSPI endpoint bindings.
crates/ironrdp-tls/src/lib.rs Exports the binding helper.
crates/ironrdp-mstsgu/tests/packet_io.rs Tests authenticated WebSocket retries.
crates/ironrdp-mstsgu/src/packet_io.rs Propagates bindings into authentication.
crates/ironrdp-mstsgu/src/http_auth/native_http_auth.rs Implements native Windows SSPI.
crates/ironrdp-mstsgu/src/http_auth/mod.rs Selects native or portable authentication.
crates/ironrdp-mstsgu/README.md Documents native authentication.
crates/ironrdp-mstsgu/CHANGELOG.md Records the feature.
crates/ironrdp-mstsgu/Cargo.toml Adds Windows bindings.
Cargo.lock Records the dependency edge.

Comment thread crates/ironrdp-mstsgu/src/http_auth/native_http_auth.rs Outdated
Comment thread crates/ironrdp-mstsgu/tests/packet_io.rs
Comment thread crates/ironrdp-mstsgu/Cargo.toml Outdated
Exercise the Windows SSPI continuation path with channel binding and run gateway transport tests through the repository check command.\n\nKeep Windows bindings out of Rustls-only builds.
@github-actions github-actions Bot added the scope/tooling Build, CI, release, or developer tooling label Aug 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer-required Maintainer review or intervention is required risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny scope/tooling Build, CI, release, or developer tooling size/L Size: up to 899 counted lines and 20 files; exceeds M in either measure

Development

Successfully merging this pull request may close these issues.

2 participants