Devolutions / Devolutions/IronRDP

Create `ironrdp-credssp-impl` (vetted sspi-backed backend)

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

Description

The vetted default backend implementing the #1428 contract over the `sspi` crate.

> **Keep this PR additive.** Create the new crate; do **not** delete or move `ironrdp-connector/src/credssp.rs` (that happens in #1433). The logic is temporarily duplicated — connector keeps its own copy so it stays compilable — until the window closes.

### Scope
- [ ] New crate `ironrdp-credssp-impl` (deps: `ironrdp-credssp`, `sspi`, `picky*`). Port the logic of `ironrdp-connector/src/credssp.rs` here (leave the original in place — see the additive note above), plus the cert/key parsing (`picky`, `picky_asn1_x509`, `picky_asn1_der`) and the `KerberosConfig -> sspi::KerberosConfig` conversion.
- [ ] Implement `CredsspProvider`/`CredsspBackend` over `sspi::credssp::CredSspClient`.
- [ ] Implement `CredsspError` by mapping `sspi::Error` (`NStatusCode`) → `CredsspErrorKind` — preserve at least `WRONG_PASSWORD → WrongPassword` and `LOGON_FAILURE → LogonFailure` (what `ironrdp-web` distinguishes today).
- [ ] `supported_protocols()` advertises `HYBRID | HYBRID_EX`.

### Acceptance criteria
- Provides a drop-in default backend that reproduces current NLA behavior.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with ironrdp-connector/src/credssp.rs and the CredsspProvider/CredsspBackend contract from #1428. Create the additive ironrdp-credssp-impl crate, including the listed certificate and Kerberos conversion work, then verify that it provides the default backend, preserves the required error mappings, and advertises HYBRID | HYBRID_EX.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.