C# NegotiateStream拒绝非';t本地管理员

C# NegotiateStream拒绝非';t本地管理员,c#,windows-authentication,tcpclient,tcplistener,C#,Windows Authentication,Tcpclient,Tcplistener,我有一个非常基本的客户机/服务器测试设置,失败时会显示以下消息: 服务器已拒绝客户端凭据 除非客户机以在服务器上具有管理员权限的帐户登录。这是我不想要的 这是我的客户代码: var formatter = new BinaryFormatter(); ... using (var client = new TcpClient(ip, 1248)) using (var stream = client.GetStream()) using (var negStream = new Negoti

我有一个非常基本的客户机/服务器测试设置,失败时会显示以下消息:

服务器已拒绝客户端凭据

除非客户机以在服务器上具有管理员权限的帐户登录。这是我不想要的

这是我的客户代码:

var formatter = new BinaryFormatter();

...

using (var client = new TcpClient(ip, 1248))
using (var stream = client.GetStream())
using (var negStream = new NegotiateStream(stream, false))
{
    await negStream.AuthenticateAsClientAsync(CredentialCache.DefaultNetworkCredentials, string.Empty, ProtectionLevel.EncryptAndSign, TokenImpersonationLevel.Identification));
    formatter.Serialize(negStream, "This is a test!");
}
这是我的服务器代码:

var listener = new TcpListener.Create(1248);
listener.Start();

var tcpClient = listener.AcceptTcpClient();
using (var stream = tcpClient.GetStream())
using (var negStream = new NegotiateStream(stream, false))
{
    await negStream.AuthenticateAsServerAsync(CredentialCache.DefaultNetworkCredentials, ProtectionLevel.EncryptAndSign, TokenImpersonationLevel.Identification));
    Console.WriteLine(formatter.Deserialize(negStream));
}

如何配置服务器以接受任何已登录的用户?我还需要看其他的设置吗?是否有其他方法可以使用域凭据对流进行身份验证?

这听起来可能很疯狂,但您可以尝试一下,它对我很有用


打开文件夹->查看选项卡->选项->查看选项卡->向下滚动并取消选中“使用共享向导”

是否已检查服务器上的安全事件日志?您正在运行哪个操作系统版本?安全事件日志没有失败。没有什么是不寻常的。我在服务器2012 R2和Windows 7上运行。服务器和客户端在哪个帐户下运行?(域帐户、NetworkService、LocalUser)并尝试使用AuthenticateTaserver()和AuthenticateTasClient()的简单重载
TcpClient
在Web服务器上作为域服务帐户运行,而
TcpListener
作为普通用户运行。如果我将服务帐户更改为管理员帐户,则一切正常。请以该形式描述哪个用户是哪个:works TcpClient-域用户、
TcpClient
上的管理员、
TcpListener
上的管理员
TcpListener
-域用户,在
TcpClient
上正常,在
TcpListener
上正常。失败也是一样,据我所知,这个答案值得一试。悬赏在我开始尝试之前就已经结束了,所以最好在为时已晚之前给我!这是希望!谢谢:),希望它能起作用。。。如果没有,请告诉我