如何使用集成Windows安全性从客户端使用Active Directory对用户进行身份验证?

时间:2010-03-08 18:59:51

标签: .net authentication active-directory

在我们的客户端/服务器应用程序中,用户可以使用用户名/密码登录。然后,如果在本地数据库中找不到该用户,则服务器将从其本地用户数据库或活动目录中对用户进行身份验证。

对于这种情况,每件事都是安全的。但我们希望在客户端上实现“集成安全性”模式,以使用当前Windows用户的凭据。

解决方案可能是捕获WindowsIdentity.GetCurrent(),将其发送到服务器并使用WindowsIdentity中的用户SID验证活动目录中是否存在用户。

但是,这不安全,因为用户SID不是私有的,因此被黑客攻击的客户端可以在不知道用户密码的情况下将此信息发送到服务器。

.Net在客户端/服务器应用程序中具有集成安全模式的安全方式是什么?

1 个答案:

答案 0 :(得分:1)

解决方案是使用NegotiateStream。这将与服务器建立安全且经过身份验证的通信。客户端可以通过向NegotiateStream提供CredentialCache.DefaultNetworkCredentials来使用集成安全性进行身份验证,服务器可以使用NegotiateStream.RemoteIdentity对经过身份验证的用户进行操作。