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

.net 如何使用集成的Windows安全性从客户端使用Active Directory对用户进行身份验证?,.net,authentication,active-directory,.net,Authentication,Active Directory,在我们的客户机/服务器应用程序中,用户可以使用用户名/密码登录。然后,服务器从其本地用户数据库或active directory(如果在本地数据库中找不到该用户)对该用户进行身份验证 在这种情况下,一切都是安全的。但我们希望在客户端上实现“集成安全”模式,以使用当前windows用户的凭据 解决方案可以是捕获WindowsIdentity.GetCurrent(),将其发送到服务器,并验证active directory中是否存在具有WindowsIdentity中用户SID的用户 但是,这是不

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

在这种情况下,一切都是安全的。但我们希望在客户端上实现“集成安全”模式,以使用当前windows用户的凭据

解决方案可以是捕获WindowsIdentity.GetCurrent(),将其发送到服务器,并验证active directory中是否存在具有WindowsIdentity中用户SID的用户

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


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

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

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

谁是服务器的主机?客户端和服务器是托管在同一个域中还是在相互信任的域中?@JD:服务器托管在windows服务中,客户端和服务器位于同一个域中。客户端和服务器之间的通信通过自定义tcp套接字(无远程处理或WCF)完成。谁是服务器的主机?客户端和服务器是托管在同一个域中还是在相互信任的域中?@JD:服务器托管在windows服务中,客户端和服务器位于同一个域中。客户机和服务器之间的通信通过自定义tcp套接字(无远程处理或WCF)完成。