Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF安全性以及在这种情况下使用什么_Wcf_Security_Login_Certificate - Fatal编程技术网

WCF安全性以及在这种情况下使用什么

WCF安全性以及在这种情况下使用什么,wcf,security,login,certificate,Wcf,Security,Login,Certificate,我有一个客户机/服务器应用程序,它在一台服务器上有多台客户机和一项服务 在服务器端,我将使用Windows服务来托管我的WCF服务。该服务将通过internet将数据传递到客户端计算机。我想我将使用具有消息级安全性的wsHttpBinding,它需要用户名或证书 现在问题来了 -我们不希望用户登录到系统 -客户端计算机上没有Windows身份验证 -我会使用证书,但是,我们每天都有大量的客户端机器,因此在每台机器上手动安装证书不是一个选项(除非它都可以通过代码完成…我是说创建和安装) 有人对如何

我有一个客户机/服务器应用程序,它在一台服务器上有多台客户机和一项服务


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

现在问题来了

-我们不希望用户登录到系统

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

-我会使用证书,但是,我们每天都有大量的客户端机器,因此在每台机器上手动安装证书不是一个选项(除非它都可以通过代码完成…我是说创建和安装)

有人对如何获得这种服务有什么想法吗?提前谢谢


和平

在您的场景中,似乎您正在寻找没有任何安全性的“基本绑定”

<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>

还有一篇非常好的文章,从五种不同的典型场景讨论了WCF安全性的基础知识——非常好的阅读!您的场景将是“完全没有安全性”场景

另一篇很好的介绍性文章是Michele Leroux Bustamante的

关于WCF的一套更全面(但也更复杂)的指导可以在on Codeplex上找到


Marc

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

编辑


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

有关basicHttpBinding的简要说明。如果您需要任何WS-*功能,那么您将希望使用wsHttpBinding。basicHttpBinding完全是赤裸裸的,除了简单的SOAP通信之外,它没有提供太多其他功能。如果需要的话,您仍然可以不使用wsHttpBinding的安全性。是的,我阅读了WCF安全博客的基础知识。。。。。英雄联盟实际上我有她的书。。。。。我目前正在使用basicHttpBinding进行测试,但这个解决方案不会让我面临攻击吗?WCF默认加密数据,对吗?但这够了吗?够了吗?取决于您的需求和场景:-)所以正如jrista所指出的“这取决于”-basicHttpBinding就是这样-非常非常基本。如果您想获得更高的安全性,或者可能需要可靠的消息传递等功能,则绝对应该使用wsHttpBinding。wsHttpBinding默认情况下会加密,而不是所有WCF绑定。只要您不需要客户端的任何证明,即证书或用户名/密码组合,也没有Windows凭据-显然,任何人都可以调用您的服务。只要您的服务是以安全的方式编写的,这就意味着任何巨魔都可以向您发送消息,但只能发送您定义的消息。您将使用什么来调用该服务,一个由您开发的点网应用程序?我将在每台机器上使用Windows服务作为客户端。。。。我写的。谢谢设拉子。。。。。那可能正是我想要的。。。。我会调查的。你在这里真的没有什么安全感。。。在这些机器上的任何人都可以获得此配置文件。你最好只加密,只允许雅虎向你发送数据。用这种方法,你基本上要防止这种情况发生。至少通过一些加密,从你的其他客户那里来回飞来飞去的数据是看不见的。90%成功的公司黑客攻击都是由上述公司的员工完成的。是的,安德森,你是对的,我正在研究使用这种方法:这是一种服务证书,客户的配置文件中只包含findValue。。。但是有没有办法创建自己的永久证书。。。。。或者你只能创建临时的?