@@ -2,8 +2,8 @@ use std::net::{IpAddr, SocketAddr};
22use std:: sync:: Arc ;
33use std:: time:: Duration ;
44
5- use crate :: config:: dto:: { DomainUser , KerberosServer } ;
65use crate :: config:: Conf ;
6+ use crate :: config:: dto:: { DomainUser , KerberosServer } ;
77use crate :: credential:: { AppCredentialMapping , ArcCredentialEntry } ;
88use crate :: proxy:: Proxy ;
99use crate :: session:: { DisconnectInterest , SessionInfo , SessionMessageSender } ;
@@ -117,6 +117,9 @@ where
117117
118118 let krb_server_config = if conf. debug . enable_unstable {
119119 if let Some ( KerberosServer {
120+ realm : _,
121+ users : _,
122+ krbtgt_key : _,
120123 max_time_skew,
121124 ticket_decryption_key,
122125 service_user,
@@ -125,10 +128,13 @@ where
125128 let user = service_user. as_ref ( ) . map ( |user| {
126129 let DomainUser {
127130 username,
128- domain,
129131 password,
132+ salt : _,
130133 } = user;
131- CredentialsBuffers :: AuthIdentity ( AuthIdentityBuffers :: from_utf8 ( username, domain, password) )
134+ CredentialsBuffers :: AuthIdentity ( AuthIdentityBuffers :: from_utf8 (
135+ username, // The username is in the FQDN format. Thus, the domain field can be empty.
136+ "" , password,
137+ ) )
132138 } ) ;
133139
134140 Some ( KerberosServerConfig {
@@ -383,23 +389,18 @@ where
383389{
384390 use ironrdp_tokio:: FramedWrite as _;
385391
386- let ( credentials, domain) = match credentials {
387- crate :: credential:: AppCredential :: UsernamePassword {
388- username,
389- domain,
390- password,
391- } => (
392+ let credentials = match credentials {
393+ crate :: credential:: AppCredential :: UsernamePassword { username, password } => {
392394 ironrdp_connector:: Credentials :: UsernamePassword {
393395 username : username. clone ( ) ,
394396 password : password. expose_secret ( ) . to_owned ( ) ,
395- } ,
396- domain. as_deref ( ) ,
397- ) ,
397+ }
398+ }
398399 } ;
399400
400401 let ( mut sequence, mut ts_request) = ironrdp_connector:: credssp:: CredsspSequence :: init (
401402 credentials,
402- domain ,
403+ None ,
403404 security_protocol,
404405 ironrdp_connector:: ServerName :: new ( server_name) ,
405406 server_public_key,
@@ -484,9 +485,9 @@ async fn resolve_client_generator(
484485 GeneratorState :: Completed ( client_state) => {
485486 break client_state. map_err ( |e| {
486487 ironrdp_connector:: ConnectorError :: new ( "CredSSP" , ironrdp_connector:: ConnectorErrorKind :: Credssp ( e) )
487- } )
488+ } ) ;
488489 }
489- }
490+ } ;
490491 }
491492}
492493
@@ -552,13 +553,9 @@ where
552553 where
553554 S : ironrdp_tokio:: FramedRead + ironrdp_tokio:: FramedWrite ,
554555 {
555- let crate :: credential:: AppCredential :: UsernamePassword {
556- username,
557- domain,
558- password,
559- } = credentials;
556+ let crate :: credential:: AppCredential :: UsernamePassword { username, password } = credentials;
560557
561- let username = sspi:: Username :: new ( username, domain . as_deref ( ) ) . context ( "invalid username" ) ?;
558+ let username = sspi:: Username :: new ( username, None ) . context ( "invalid username" ) ?;
562559
563560 let identity = sspi:: AuthIdentity {
564561 username,
0 commit comments