Skip to content

feat(credssp): use the KdcResolution enum instead of KDC url - #1987

Open
Rostyslav-Romanets wants to merge 2 commits into
Devolutions:masterfrom
Rostyslav-Romanets:add-iakerb-support
Open

Rostyslav-Romanets wants to merge 2 commits into
Devolutions:masterfrom
Rostyslav-Romanets:add-iakerb-support

Conversation

@Rostyslav-Romanets

Copy link
Copy Markdown

This PR adds the KdcResolution enum, which specifies how Kerberos should resolve the KDC, either by using IAKERB proxy or by connecting directly to an external KDC specified by URL.

THis PR is part of integration of the IAKERB extension in sspi-rs and updates the codebase to use the updated public API of sspi-rs.

Related PRs

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.

Copilot review overview

🟡 Changes recommended

Local path overrides break clean checkouts, and the testsuite imports an incompatible KdcResolution type.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity · 1 Low severity

Open (3)
What changed in this PR

Updates CredSSP Kerberos configuration for sspi 0.22 and IAKERB-based KDC resolution.

Changes:

  • Adds KdcResolution and Kerberos configuration constructors.
  • Migrates client, web, and test code to the new API.
  • Updates sspi, picky, and related dependencies.
File Description
Cargo.toml Adds local dependency overrides.
Cargo.lock Updates the resolved dependency graph.
ffi/​Cargo.toml Upgrades sspi.
crates/​ironrdp/​Cargo.toml Upgrades example dependency on sspi.
crates/​ironrdp-web/​src/​session.rs Uses URL-based KDC resolution.
crates/​ironrdp-testsuite-extra/​tests/​client/​config.rs Updates the KDC URL assertion.
crates/​ironrdp-mstsgu/​Cargo.toml Upgrades sspi and picky.
crates/​ironrdp-connector/​src/​credssp.rs Adds KDC strategies and conversion to sspi.
crates/​ironrdp-connector/​Cargo.toml Upgrades authentication dependencies.
crates/​ironrdp-client/​src/​config.rs Maps configuration properties to KDC resolution.
crates/​ironrdp-acceptor/​src/​credssp.rs Propagates request length errors.

Comment thread Cargo.toml
Comment thread crates/ironrdp-connector/Cargo.toml Outdated
Comment thread crates/ironrdp-testsuite-extra/tests/client/config.rs Outdated
@github-actions github-actions Bot added needs-review A human reviewer is the current next actor risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny scope/core Touches the core architectural tier scope/ffi Affects native or .NET bindings scope/web Affects the web/WASM ecosystem size/L Size: up to 899 counted lines and 20 files; exceeds M in either measure labels Sep 24, 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.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@CBenoit

Copy link
Copy Markdown
Member

Thank you for adding this. I’ll review the picky-rs/sspi-rs PRs first.

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.

Copilot review overview

🔵 Needs a closer look

IAKERB configuration can retain a conflicting legacy KDC proxy property, and the local dependency patches remain nonportable.

Review effort: Balanced
Findings: None

Resolved since last review (3)
Previously missed (1)

In code that hasn't changed since last review

Medium severity Clear stale kdcproxyname when mirroring explicit Kerberos config

crates/​ironrdp-client/​src/​config.rs:1347

When cfg selects IAKerb, an existing kdcproxyname loaded from the property set survives because only kdcproxyurl is cleared. The built config uses IAKERB, but its public properties() still advertises the old proxy; feeding those properties into another builder then selects KdcUrl instead. Clear kdcproxyname whenever an explicit Kerberos config is mirrored so the two representations cannot conflict.

@CBenoit Benoît Cortier (CBenoit) added automation-failed Exact-head automated classification or review failed or was unavailable needs-author-action The pull request author is the current next actor and removed needs-review A human reviewer is the current next actor automation-failed Exact-head automated classification or review failed or was unavailable labels Sep 30, 2026

This branch was successfully deployed

1 active deployment
llm-providers — cfff55cd Deployed Sep 28, 2026 by Rostyslav-Romanets via Classify pull request #1003
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-author-action The pull request author is the current next actor risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny scope/core Touches the core architectural tier scope/ffi Affects native or .NET bindings scope/web Affects the web/WASM ecosystem 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.

3 participants