2

我创建了一个服务器/客户端应用程序。它们都是用 C# 编写的。它使用带有自定义 SSL 实现的 TCP/IP 通信。目前,登录过程需要用户名/密码对才能登录。

我被要求实施单点登录以消除对用户名/密码的需要。

因此,现在当客户端启动时,它会确定当前登录用户的 SID 并将其发送到服务器,服务器通过 SID 将此连接映射到用户。

这个解决方案效果很好,但我认为它根本不是一个安全的解决方案。

客户端有一个强名称,当然它是被混淆的。

我开始思考如何破解这个登录名,我认为从黑客的角度来看这很容易: - 在网络上找出用户的 SID 不是问题 - 删除强名称并更改适当的代码使用硬编码的 SID 而不是当前的 SID 可以很容易地实现

所以你怎么看?你能建议我一个更好的解决方案吗?你能告诉我如何提高安全性吗?

或者您能告诉我 Outlook 如何处理用户身份验证吗?(我猜/希望欺骗 Outlook 不是那么容易)

谢谢!

4

1 回答 1

2

要使用 Windows 身份验证进行身份验证,您可以使用NegotiateStream.

MSDN 提供了一个不错的示例,您可以使用它来执行身份验证:

http://msdn.microsoft.com/en-us/library/system.net.security.negotiatestream(v=vs.85).aspx

于 2011-11-15T17:54:53.920 回答