【问题标题】:Integrated Security综合安全
【发布时间】:2008-11-18 14:26:30
【问题描述】:

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

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

这可以吗?如果有,哪里有例子?

【问题讨论】:

  • 您的意思是要获取 Windows 登录凭据吗?
  • 不,我知道该怎么做...我想知道如何将集成安全凭据通过网络传递给服务器,就像浏览器传递给 IIS Web 服务器一样。 . 没有实际传递登录名和密码...(我认为浏览器传递了一些服务器可以验证的协调令牌)

标签: c# remoting windows-authentication


【解决方案1】:

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

【讨论】:

  • 啊你这该死的救世主!!!!我能在管子上找到的唯一东西是有一个包装纸——不是它在哪里!谢谢一百万。
  • 2012年有更好的答案吗?我们基于这个示例(在 2004 年 .net 2.0 之前编写)实现了一个解决方案,虽然它可以工作,但它需要我们有一个 c++ 项目并依赖于 crt redist。我在下面看到另一个答案说要使用 NegotiateStream 类,但我没有看到任何示例。有什么建议吗?
  • @christopher - 似乎 MSDN 有一个使用 NegotiateStream 的示例。 msdn.microsoft.com/en-us/library/…
  • 我看到了,但不知道如何使它适合我的情况。我正在使用适用于 .NET 的 VSphere SDK,它有一个带有 LoginBySSPI 方法的 sessionmanager 类,该方法将 Base64 编码的 SSPI 令牌作为参数。我不知道如何使用 NegotiateStream 让我到达那里。如果您对此有任何想法,我可以发布一个新问题供您回答。
【解决方案2】:

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

【讨论】:

  • 你能提供一个如何使用这个类的小例子吗?
【解决方案3】:

有 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

这两步很适合开始自己实施的安全集成。

【讨论】:

    【解决方案4】:

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

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

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

    -奥辛

    【讨论】:

    • 我的意思是不使用 IIS...而是使用 tcp/ip 通道,使用 System.Runtime.Remoting 和 System.Runtime.Remoting.Channels.Tcp: RemotingConfiguration.RegisterWellKnownServiceType( );
    • 因为我想使用 tcp 二进制协议 - 不想受到 IIS 施加的限制来获得免费的东西,......这正是我的问题......我该怎么做(自己认证?
    猜你喜欢
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多