NegotiateStream 拒绝不是本地管理员的客户端

joe*_*ish 5 c# tcplistener windows-authentication tcpclient

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

服务器拒绝了客户端凭据。

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

这是我的客户端代码:

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!");
}
Run Code Online (Sandbox Code Playgroud)

这是我的服务器代码:

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));
}
Run Code Online (Sandbox Code Playgroud)

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

Hus*_*lil 1

这可能听起来很疯狂,但你可以尝试一下,无论如何它对我有用

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