Devolutions / Devolutions/IronRDP

Server-side CredSSP provider + migrate `ironrdp-acceptor` off `ironrdp-connector`

Open
#1,432 0 comments 0 reactions 0 assignees View on GitHub
kind/technical-debt scope/core
Dominant language
Rust
Stars
3.2k
Forks
275
Avg merge
1d 11h
Merged PRs (30d)
189

Description

`ironrdp-acceptor` depends on the *client* `ironrdp-connector` only to borrow `Sequence`/`ServerName`/`DesktopSize`/`ConnectorError` and (until #1427) the sspi re-export. With the framework in `ironrdp-sequence` (#1426) and CredSSP behind a trait (#1428/#1429), that dependency can go.

### Scope
- [ ] Add a server role to the CredSSP contract (a `role` on the provider or a `ServerCredsspProvider` sibling) in `ironrdp-credssp`; implement it in `ironrdp-credssp-impl` over `sspi::credssp::CredSspServer`.
- [ ] `ironrdp-acceptor` depends on `ironrdp-sequence` + `ironrdp-credssp` instead of `ironrdp-connector`; define `AcceptorError` (or reuse `SequenceError` + a credssp error) rather than borrowing `ConnectorError`.
- [ ] Add xtask guard: `ironrdp-acceptor` must not depend on `ironrdp-connector`.

### Acceptance criteria
- `cargo tree -p ironrdp-acceptor -e no-dev -i ironrdp-connector` is empty.
- Server-side NLA behavior unchanged.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the CredSSP contracts in ironrdp-credssp and their implementation in ironrdp-credssp-impl, then inspect ironrdp-acceptor's current ironrdp-connector usage. Run cargo tree -p ironrdp-acceptor -e no-dev -i ironrdp-connector and the relevant workspace tests; done means the tree is empty and server-side NLA behavior is unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, backend, security
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.