【问题标题】:Create a secure application with basicHttpBinding使用 basicHttpBinding 创建安全应用程序
【发布时间】:2011-03-08 18:33:46
【问题描述】:

因为面对这个问题,这些天我真的很累。 我正在构建一个使用 WCF 服务的 XBAP 应用程序(WPF 浏览器应用程序)。 此应用需要:

  • 用户可以使用他们的用户名和密码(存​​储在我的数据库中)登录
  • 用户无需安装任何 X509 证书(*.pfx 或 *.cert...)
  • WCF 服务必须使用 basicHttpBinding(以支持其他 silverlight 应用程序)

我尝试了很多方法,但它们不符合这些要求。 你有什么解决办法吗?提前致谢。

【问题讨论】:

    标签: wpf wcf authentication certificate basichttpbinding


    【解决方案1】:

    basicHttpBinding - 顾名思义 - 它提供的功能非常基本。在安全方面尤其重要。

    据我所知,您无法实现您想要做的事情。 BasicHttpBinding 仅支持使用 Windows 凭据(不适用于具有自定义用户的 Internet)或数字证书的传输安全性(使用 https 协议),或通过数字证书(您明确排除 - 为什么??)的消息安全性。

    查看此 CodeProject 文章 8 steps to enable windows authentication on WCF BasicHttpBinding 或 Google 以获取“basicHttpBinding 安全性” - 您会找到很多文章,但可能没有真正满足您要求的解决方案 - 您无法使用 basicHttpBinding 做到这一点。

    更新:默认情况下,在 WCF 中,您应该在每次调用时传递调用者的凭据 - 但不是作为服务方法的参数,而是通过在服务代理生成的客户端上指定客户端凭据 -边。比如:

     myService.ClientCredentials.UserName.UserName = "username";
     myService.ClientCredentials.UserName.Password = "p@ssw0rd";
    

    【讨论】:

    • 还有一个问题,请。我想构建一个允许用户使用 WCF 服务登录的 silverlight 应用程序(用户名和密码存储在数据库中)。有可能吗?
    • WCF 服务本质上是(并且应该是)无状态的,例如您不“登录”然后使用其他服务。您在每次通话时都提供您的凭据。
    • 感谢回复,表示WCF服务每次调用都需要用户名和密码 --> 像这样:"string getData(string username, string password, string keyword_to_get_data)" ??? :|
    • 不,不是真的 - 您将在标头中将用户名/密码作为客户端凭据传递。您无需将它们作为参数添加到服务调用中。
    • 以及如何在服务器端获取用户名和密码(不使用wsHttpBinding,因为silverlight只支持basicHttpBinding和netTCPBinding)?
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多