是否有托管代码(不添加COM组件或包装调用C ++例程)的方式将集成安全性添加到C#托管代码程序集中?
即。我想编写一个客户端 - 服务器系统,其中服务器使用Remoting而不是IIS,但我希望客户端自动将其凭据传递给服务器,就像浏览器与启用了集成安全性的IIS服务器通信时一样...
可以这样做吗?若然,有哪些例子?
答案 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
和服务器部分
这两个步骤非常适合启动自己实现的安全集成。
答案 3 :(得分:-1)
当你说“远程代替IIS”时,你究竟是什么意思?远程端点(服务器端)通常托管在IIS中,因为这样可以免费提供大量内容,例如身份验证,通过负载平衡进行扩展 - 特别是对于单个类型的对象 - 也就是说,您不希望保持状态用于连续调用端点。
您可以在xp / sp2中的客户端应用程序中使用http堆栈来托管远程端点,并且可以直接使用http.sys驱动程序(可以自动为您处理)。
无论如何,对于使用NTLM凭据进行自动登录,我建议您在IIS中托管远程处理,并使用System.Net.CredentialCache.DefaultCredentials作为客户端应用程序的客户端凭据。这会将上下文凭据传递给服务器应用程序,假设当前安全区域(intranet / internet / trusted / etc)允许它。
-Oisin