WCF最简单的安全模式实现

时间:2011-02-18 16:24:46

标签: c# wcf security

在以下情况下,在WCF中实施最简单的安全模式是什么:

  1. 客户端和服务都是.NET 的应用程序。
  2. 客户和服务正在协商 在互联网上。
  3. SSL无法使用。
  4. 端口80(网络)是首选 通信。
  5. 使用x 509 certificate应该是 最后一个选项(相同的凭据) 两边的配置文件是 首选,如果可能的话)

3 个答案:

答案 0 :(得分:1)

如果您正在寻找进行用户名/密码身份验证的方法,可以使用wsHttpBinding并创建一个继承自UsernamePasswordValidator的自定义类,并覆盖Validate方法。

以下是一个示例:http://codebetter.com/petervanooijen/2010/03/22/a-simple-wcf-service-with-username-password-authentication-the-things-they-don-t-tell-you/

答案 1 :(得分:0)

实施最简单的安全措施是缺乏安全性,但根本不推荐:

<message clientCredentialType="None" />

<transport clientCredentialType="None" />

实际上提供一些安全性的下一个可能是Windows(请参阅有关启用此here的教程)或Password以获取传输级安全性。有关可用凭据选项的MSDN概述,请参阅here

但说实话,除了指定最简单之外,还有很广泛的内容可供您使用。您可以合并TransportMessage安全性,使用或使用不同的凭据类型等等 - 实际上,最简单取决于要求,给定第5点您的问题似乎强化了我对此方案的WindowsPassword身份验证建议。

答案 2 :(得分:0)

security你是什么意思?如果您的安全性实际上仅仅意味着用户名和密码(客户端身份验证)并且您对纯文本消息感到满意,则可以在没有证书的情况下在Internet上使用“安全性”。如果您需要任何形式的加密和签名,您需要证书,或者您必须构建自己的解决方案。 (无法使用Windows安全模式,因为它仅适用于同一个AD域或受信任域。)

WCF本身默认仅在安全通道(传输或消息安全性)上提供UserName / Password(带有纯文本密码的WS-Security UsernameToken配置文件)。可以使用UserName / Password over unsecured channel,但在这种情况下,您将通过Internet发送纯文本密码。 UsernameToken Profile还提供了已消化的密码 - 它不被认为是安全的,但它经常被使用。 WCF不支持它,但有some implementation可用。

我会使用HTTPS。为什么不可能?