2

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

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

这可以做到吗?如果是这样,哪里有一些例子?

4

4 回答 4

5

否 - SSPI没有纯托管接口。但是,有一个 MSDN 示例为您包装 SSPI,然后使用包装器进行远程处理

于 2008-11-18T15:24:59.330 回答
2

.NET 2 具有 NegotiateStream,TCP 远程处理使用它来提供 SSPI。

于 2008-12-28T12:21:39.303 回答
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

这两个步骤很好地开始了自己实施的安全集成。

于 2008-12-28T13:21:39.947 回答
-1

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

您可以在客户端应用程序中使用 http 堆栈托管远程端点,也可以在 xp/sp2 中以及直接使用 http.sys 驱动程序(顺便说一句,它会自动为您处理)。

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

-Oisin

于 2008-11-18T14:39:58.063 回答