C#-在WinForms中实现单点登录(与Outlook一样)

C#-在WinForms中实现单点登录(与Outlook一样),winforms,login,single-sign-on,sid,Winforms,Login,Single Sign On,Sid,我已经创建了一个服务器/客户端应用程序。它们都是用C写的。它使用TCP/IP通信和自定义SSL实现。 当前,登录过程需要用户名/密码对才能登录 我被要求实现单点登录,以消除对用户名/密码的需要 因此,现在当客户端启动时,它确定当前登录用户的SID,并将其发送到服务器,服务器通过SID将此连接映射到用户 这个解决方案运行良好,但我认为它根本不是一个安全的解决方案 客户机有一个强名称,当然它是模糊的 我开始思考如何破解这个登录,我认为从黑客的角度来看这很容易: -在网络上查找用户的SID不是问题 -

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

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

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

这个解决方案运行良好,但我认为它根本不是一个安全的解决方案

客户机有一个强名称,当然它是模糊的

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

那你觉得呢? 你能给我一个更好的解决方案吗? 你能告诉我如何提高安全性吗

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


谢谢大家!

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

MSDN提供了一个不错的示例,可用于执行身份验证: