如何要求一个有效的用户名和密码使用WCF(没有传输安全)

问题描述:

类似this question,我需要能够要求用户名+密码没有传输安全。但在我的情况下,实际的IIS服务器没有SSL,但它前面的代理服务器确实如此。如何要求一个有效的用户名和密码使用WCF(没有传输安全)

这是WCF遇到问题的地方 - 因为托管它的盒子将不允许没有SSL的此类安全性。所以简而言之 - 我是否需要为此编写自己的绑定,还是因为这种情况错过了某种解决方法?

是的,如果您需要传递用户名/密码,WCF将需要加密通信。

我认为唯一的方法是创建一个用于安全通信的证书(消息级别的安全性)。您可以轻松地makecert做到这一点,是这样的:

makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=localhostCA -sky exchange -pe 

您可能需要授予访问此证书的IIS用户,使用Windows HTTP服务证书配置工具。然后,运行以下命令(假设“ASPNET”是适当的IIS用户):

winhttpcertcfg -g -c LOCAL_MACHINE\My -s localhostCA -a ASPNET 

替换“localhostCA”与您的证书的名称。