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

时间:2009-08-05 18:06:40

标签: wcf security login certificate

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

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

现在这是问题.....

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

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

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

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

和平

3 个答案:

答案 0 :(得分:0)

在您的场景中,您似乎正在寻找没有任何安全性的“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指南。

马克

答案 1 :(得分:0)

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

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

修改

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

答案 2 :(得分:0)

在WCF中,消息通过各种支持的协议传输,包括IPC(命名管道),TCP,HTTP和MSMQ。因此,您必须建立安全策略以保护消息以及对呼叫进行身份验证和授权。 WCF安全本身就是一个很大的话题,但我们相信本文将为您提供如何快速了解WCF安全性的方法。 http://sanjevsharma.blogspot.com/2011/10/basics-of-wcf-security-part-i.html