【问题标题】:WCF Security and what to use in this situationWCF 安全性以及在这种情况下使用什么
【发布时间】:2009-08-05 18:06:40
【问题描述】:

我有一个客户端/服务器应用程序,它有许多客户端机器和服务器上的一个服务.....

在服务器端,我将使用 Windows 服务来托管我的 WCF 服务。该服务将通过 Internet 将数据传递到客户端计算机。我想我将使用具有消息级别安全性的 wsHttpBinding,这需要用户名或证书。

现在问题来了.....

-我们不想让用户登录系统

-客户端机器上没有 Windows 身份验证

-我会使用证书,但是,我们每天都有大量的客户端机器出故障,因此在每台机器上手动安装证书不是一种选择(除非这一切都可以通过代码完成......和我的意思是创建和安装)

有人对如何确保这种服务有任何想法吗?提前致谢

和平

【问题讨论】:

  • 你会用什么来调用服务,一个你开发的点网应用?
  • 我将在每台机器上使用 Windows 服务作为客户端......由我编写。

标签: wcf security login certificate


【解决方案1】:

在您的场景中,您似乎正在寻找没有任何安全性的“basicHttpBinding”。

<bindings>
  <basicHttpBinding>
    <binding name="NoSecurity">
      <security mode="None" />
    </binding>
  </basicHttpBinding>
</bindings>

然后配置您的端点以使用该绑定配置:

<system.serviceModel>
    <services>
        <service name="YourNamespace.YourService"
                 behaviorConfiguration="MyServiceBehavior">
           <endpoint address="" 
                     binding="basicHttpBinding" 
                     bindingConfiguration="NoSecurity" 
                     contract="YourNamespace.IMyService">
            </endpoint>
            <endpoint address="mex" 
                      binding="mexHttpBinding" 
                      contract="IMetadataExchange" />
        </service>
    </services>

还有一个非常棒的blog post series,从五个不同的典型场景的角度讨论了 WCF 安全的基础知识 - 精彩阅读!您的场景将是“根本没有安全性”的场景。

另一篇很好的介绍性文章是 Michele Leroux Bustamante 的 Fundamentals of WCF Security

可以在 Codeplex 上的 WCF Security Guidance 上找到更全面(但也更复杂)的 WCF 指南。

马克

【讨论】:

  • 关于 basicHttpBinding 的简要说明。如果您需要任何 WS-* 功能,那么您将需要使用 wsHttpBinding。 basicHttpBinding 绝对是简单的,除了简单的 SOAP 通信之外,不提供任何东西。如果需要的话,你仍然可以不使用 wsHttpBinding 的安全性。
  • 是的,我阅读了 WCF Securiy 博客的基础知识.....哈哈......我实际上有她的书......我目前正在使用 basicHttpBinding 进行测试,但不会这样解决方案让我受到攻击? WCF默认加密数据对吗?但这够了吗?
  • 够了吗?取决于您的需求和场景:-) 所以“这取决于”正如 jrista 所说 - basicHttpBinding 就是这样 - 非常非常基本。如果您想拥有更高的安全性,或者可能需要可靠消息传递等,那么您绝对应该使用 wsHttpBinding。
  • wshttpbinding 默认加密,并非所有 WCF 绑定。
  • 只要您不需要客户端的任何证明(证书、用户名/密码组合或 Windows 凭据),显然任何人都可以调用您的服务。只要您的服务以安全的方式编写,就意味着任何巨魔都可以向您发送消息 - 但只能发送您定义的消息。
【解决方案2】:

因为您将使用自己编写的应用程序。您可以将 wshttpbinding 与用户名和密码身份验证(客户端凭据类型基本)一起使用,您的应用会从配置文件中读取用户名和密码。

http://msdn.microsoft.com/en-us/library/ms731299.aspx

编辑

Windows 服务可以在用户没有密码的帐户下运行。该服务位于受 ACL 保护的目录中,因此机器的用户无权访问配置文件。

【讨论】:

  • 感谢设拉子.....这可能正是我想要的......我会考虑试试这个。
  • 你真的没有获得太多的安全性......任何在其中一台机器上的人都可以得到这个配置文件。你最好只加密并允许任何雅虎向你发送数据。无论如何,您基本上都必须通过这种方法来防范这种情况。至少通过一些加密,您的其他客户端来回传输的数据是看不到的。
  • 90% 的成功企业黑客攻击都是由该公司的员工完成的。
  • 是的安德森,你是对的,我正在考虑使用这种方法:msdn.microsoft.com/en-us/library/ms752231.aspx 这是一个服务证书,客户端在其配置文件中只有 findValue ......但是有没有办法创建自己的永久证书.....还是只能创建临时证书?
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
相关资源
最近更新 更多