2010-06-27 42 views
1

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

  • 用户可以使用自己的用户名和密码(即存放在我的数据库)登录
  • 用户不需要安装任何X509证书(* .PFX或* .cert ...)
  • WCF服务必须使用basicHttpBinding的(以支持其他Silverlight应用程序)

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

回答

2

basicHttpBinding正如其名称所暗示的那样非常基本。当涉及到安全性时,这尤其重要。

据我所知,你不能达到你想要做的。 BasicHttpBinding仅支持使用Windows凭据(不适合通过互联网使用自定义用户)或数字证书的传输安全性(使用https协议),或者通过数字证书(您明确排除 - 为什么?)支持消息安全性。

查看本CodeProject文章8 steps to enable windows authentication on WCF BasicHttpBinding或谷歌的“basicHttpBinding安全” - 你会发现很多文章,但可能没有真正的解决方案满足你的要求 - 你不能用basicHttpBinding做到这一点。

更新:默认情况下,WCF,你应该通过调用者的凭证与每一个电话 - 但不是在服务方法的参数,而是通过对服务代理生成的客户端指定客户端凭证。例如:

myService.ClientCredentials.UserName.UserName = "username"; 
myService.ClientCredentials.UserName.Password = "[email protected]"; 
+1

非常感谢,marc_s! – hanuman0503 2010-06-27 13:29:54

+0

还有一个问题,请说。我想构建一个允许用户使用WCF服务登录的Silverlight应用程序(用户名和密码存储在数据库中)。可能吗? – hanuman0503 2010-07-06 01:47:06

+0

WCF服务是(且应该是)本质上是无状态的,例如你不要“登录”,然后使用额外的服务。每次通话都提供您的凭证。 – 2010-07-06 05:35:29