【问题标题】:NegotiateStream rejecting clients that aren't local adminsNegotiateStream 拒绝非本地管理员的客户端
【发布时间】:2015-07-14 07:43:04
【问题描述】:

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

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

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

这是我的客户端代码:

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));
}

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

【问题讨论】:

  • 您检查过服务器上的安全事件日志吗?您运行的是哪个操作系统版本?
  • 安全事件日志没有失败。没有什么不寻常的。我在 Server 2012 R2 和 Windows 7 上运行。
  • 服务端和客户端运行在什么账号下? (Domain-Accounts, NetworkService, LocalUser) 并尝试使用 AuthenticateAsServer() 和 AuthenticateAsClient() 的简单重载
  • TcpClient 在网络服务器上作为域服务帐户运行,TcpListener 作为普通用户运行。如果我将服务帐户更改为管理员帐户,一切正常。
  • 请以该形式描述哪个用户是哪个用户:WORKS TcpClient - 域用户,TcpClient 上的管理员,TcpListener 上的管理员。 TcpListener - 域用户,TcpClient 上正常,TcpListener 上正常。 FAILS 也一样

标签: c# windows-authentication tcpclient tcplistener


【解决方案1】:

这可能听起来很疯狂,但你可以试一试,反正对我有用

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

【讨论】:

  • 据我所知,这个答案值得一试。
  • 赏金在我尝试之前就已经结束了,所以最好在为时已晚之前给它!这是希望!
  • 谢谢 :),希望它有效...如果无效请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多