使用basicHttpBinding进行身份验证

时间:2010-09-22 17:23:47

标签: wcf authentication

我已将我的web服务转换为wcf服务,将wcf服务的扩展名保留为asmx,因为我有一个庞大的客户端,并且不想让用户更改扩展名。目前我有我的客户的用户名/密码认证,我希望他们离开。由于我的用户群从各种机器和操作系统调用我的Web服务,因此我无法获得可以将其移动到哪种类型的身份验证。

X509证书,发行令牌,用户名密码或其他内容..?任何帮助或指导与一些示例代码块或网址'将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果要使用WCF服务替换ASMX服务,则使用BasicHttpBinding(也可能使用AspNetCompatibility)。在这种情况下,您没有太多选择。您可以将传输安全性(HTTPS)与客户端证书或TransportWithMessageSecurity(HTTPS + UserName令牌配置文件)一起使用。如果您不想使用HTTPS并且仍想使用UserName令牌配置文件,则需要使用.NET 4.0,并且必须创建自定义绑定,如:

<customBinding>
  <binding name="InsecureCredentials">
    <security mode="UserNameOverTransport" allowInsecureTransport="true" />
    <textMessageEncoding messageVersion="Soap11" />
    <httpTransport />
  </binding>
</customBinding>

答案 1 :(得分:0)

最终,这取决于谁对你的服务的要求,IMO。

如果这主要是B对B,意味着您的客户是一些自动化过程,而不是像Silverlight应用程序,我更喜欢身份证书(即x509)。如果这是一个用户驱动的调用,如silverlight应用程序,那么我会坚持使用用户名/密码,但考虑联合身份。

也就是说,鉴于您有许多不同类型的客户,即使它是b-to-b,也无法保证您能够使用x509为每个客户提供服务。根据我的经验,太多的商店不够灵活,不能采用“更新”的标准(尽管x509已经存在了很长时间,但对许多人进行网络服务调用来说仍然是“新的”)。因此,最好坚持使用用户名/密码。

可以提供所有这三个。 WCF就是这样非常好的;设置单个服务实现非常简单,只需支持用户名/密码auth x509 联合身份。几乎所有这些都是由绑定配置处理的;你可能需要一些用户名/密码auth的插件代码(取决于你如何设置)但是auth代码完全脱离了服务代码。