综合安全

时间:2008-11-18 14:26:30

标签: c# remoting windows-authentication

是否有托管代码(不添加COM组件或包装调用C ++例程)的方式将集成安全性添加到C#托管代码程序集中?

即。我想编写一个客户端 - 服务器系统,其中服务器使用Remoting而不是IIS,但我希望客户端自动将其凭据传递给服务器,就像浏览器与启用了集成安全性的IIS服务器通信时一样...

可以这样做吗?若然,有哪些例子?

4 个答案:

答案 0 :(得分:5)

否 - SSPI没有纯粹的托管接口。但是,有一个MSDN样本wraps SSPI for you,然后是uses the wrapper for remoting

答案 1 :(得分:2)

.NET 2具有NegotiateStream,TCP remoting使用它来提供SSPI。

答案 2 :(得分:1)

有WCF和所有.net库供您实现类似的东西。我用过这样的东西

http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm

和服务器部分

http://weblogs.asp.net/dwahlin/archive/2007/02/03/video-creating-a-service-with-windows-communication-service-wcf.aspx

这两个步骤非常适合启动自己实现的安全集成。

答案 3 :(得分:-1)

当你说“远程代替IIS”时,你究竟是什么意思?远程端点(服务器端)通常托管在IIS中,因为这样可以免费提供大量内容,例如身份验证,通过负载平衡进行扩展 - 特别是对于单个类型的对象 - 也就是说,您不希望保持状态用于连续调用端点。

您可以在xp / sp2中的客户端应用程序中使用http堆栈来托管远程端点,并且可以直接使用http.sys驱动程序(可以自动为您处理)。

无论如何,对于使用NTLM凭据进行自动登录,我建议您在IIS中托管远程处理,并使用System.Net.CredentialCache.DefaultCredentials作为客户端应用程序的客户端凭据。这会将上下文凭据传递给服务器应用程序,假设当前安全区域(intranet / internet / trusted / etc)允许它。

-Oisin