Wrap NetworkStream in NegotiateStream and call the appropriate NegotiateAs...
methods NegotiateAs...
on both the client and server.
The client can specify what level of impersonation is allowed, and the server can specify what level it requires (minimum Identification
to determine the client identifier, but if you need to access local or network resources as a client, you can also specify Impersonation
or, with proper network configuration, Delegation
).
After authentication, the server can determine the client identifier and / or impersonate use using the NegotiateStream RemoteIdentity
.
As I mentioned in my comment, I donโt know how Citrix affects this setting (never using it), but if it is mostly completely transparent to the application and everything uses standard Windows credentials, then this should work.
source share