wcf中的自定义身份验证没有证书,https,ssl和iis

时间:2012-01-13 03:16:19

标签: wcf security iis authentication https

首先抱歉我的英语,而不是我的母语。我将尽力描述我的问题。

我在互联网上搜索了很长时间的解决方案,我可以创建一个wcf服务,该服务可以使用所需的用户名和密码响应我的客户的请求,但不使用https或任何其他需要特殊功能的证书来创建证书我将安装Windows服务的机器上的配置。

以下是我的观点:我想向许多客户部署应用程序。该应用程序将具有移动设备和服务器,它将在wcf的帮助下向移动设备提供一些信息。每个客户都有一台服务器和许多设备。我不希望Web上的任何人都可以访问这些信息,因此,我必须为每个请求实现一个带有用户名和密码的身份验证过程,但我不想强制安装证书,激活一些当我出售我的应用程序的新副本时,每台机器上的https端口。

我已经读过,使用wcf 4.0,有一个可以加密数据的内置系统,因此,如果可能的话,我不希望实现任何其他的开销。

我的问题是:考虑到我的要求,是否有可能获得安全的解决方案?如果是,我该怎么做?

如果我真的必须创建证书并使用IIS,https或任何其他安全解决方案,那么可以在一个软件包中自动执行这些操作,这些软件包将通过单击向导安装到我的客户的每台服务器机器中吗?

提前感谢您的时间。

2 个答案:

答案 0 :(得分:1)

默认情况下,WCF不允许通过http传输用户名凭据,因此必须使用证书来保护传输层。但是,如果您确定通过http频道发送用户名凭据就可以了,那么您可以查看ClearUsernameBinding,这样可以灵活地通过http频道发送用户名凭据(考虑到有人可以拦截您的传输渠道以获取凭证)

此外,如果您想使用必须安装的证书,您可以在c#中编写一些代码,并将其作为安装的一部分从您的软件包中包含。您还可以从msi配置所有内容,例如创建虚拟目录,部署应用程序等等。

答案 1 :(得分:0)

您可能正在寻找的是具有消息级安全性的wcf绑定之一。您可以将用户名和密码放入此消息中,而不必担心它们会通过未加密的http线(即自定义身份验证)。 WCF的默认值在标题中作为http请求的一部分发送用户名和密码,这就是它想要https的原因。