无证书,https,ssl和iis的wcf中的自定义身份验证
首先感谢我的英语,它不是我的母语。我会尽我所能地描述我的问题。无证书,https,ssl和iis的wcf中的自定义身份验证
我在互联网上搜索了很长时间,在这里我可以创建一个wcf服务,可以使用用户名和密码响应客户端的请求,但不需要创建证书,使用https或其他任何需要我的Windows服务将安装在机器上的特殊配置。
这是我的观点:我想为我的许多客户部署一个应用程序。这个应用程序将有移动设备和一个服务器,它将在wcf的帮助下向移动设备提供一些信息。每个客户将有一台服务器和许多设备。我不希望网络上的任何人都能访问这些信息,因此,我必须为每个请求实施一个包含用户名和密码的身份验证程序,但我不希望被迫安装证书,激活一些当我出售我的应用程序的新副本时,每台机器上的https端口。
我读过wcf 4.0,有一个内置的系统,可以加密数据,因此,我不希望实施任何其他的开销,如果可能的话。
我的问题是:考虑到我的要求,是否可以有一个安全的解决方案,如果是的话,我该怎么做?
如果我真的必须创建一个证书并使用IIS,https或任何其他安全解决方案,那么可以在一个包中自动执行这些操作,这些包将安装在我的客户的每台服务器机器上的一次单击向导中?
预先感谢您的时间。
默认情况下,WCF不允许通过http传输用户名凭证,因此必须使用证书来保护传输层。但是,如果您确定自己可以通过http通道发送用户名凭证,那么您可以看看ClearUsernameBinding,它可以灵活地通过http通道发送用户名凭据(考虑到有人可以拦截您的传输通道以获取访问凭据)
另外,如果您想使用必须安装的证书,您可以实现在c#中编写一些代码,并将其作为您的安装包的一部分。你也可以像MSI一样配置一切,比如创建虚拟目录,部署应用程序等等。
你可能正在寻找的是具有消息级安全性的wcf绑定之一。您可以将用户名和密码放入此消息中,而不用担心它们通过未加密的http线(即自定义身份验证)。 WCF默认的发送用户名和密码作为头中http请求的一部分,这就是为什么它需要https。
您可以将传输方式更改为不需要安全性,因为.net 3.5会在http头中发送用户名和密码。 – 2012-01-15 18:59:54