引用MSDN的上的一个回复:
Hi,
我之前也有关于这个问题的疑惑。因为之前Web Service 和 WSE3.0 里都可以使用用户名和密码方式来实现身份验证。Web Service可以直接在Soap 消息头部加入UserName 和Password信息。WSE3.0对此进行了扩展,加入了安全验证机制,要求客户端在服务调用以前,必须设置用户令牌信息,服务获取请求以后,先进行消息的还原和验证。WCF里的UserNamePasswordValidator验证方式应该就是对扩展。不过他是重写了UsernameTokenManager的AuthenticateToken方法。但是机制应该类似。大家有兴趣可以看看WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发 。主要原因就是WCF的安全直接提升了一个层次,使用WS-Secrity安全规范。这里核心就是X.509证书加密消息。也就是WCF强制支持WS-Security规范的话,无论服务器还是客户端通信,就必须使用证书。
要么不使用安全,即:none.一旦使用,必须要求至少服务端,提供一个证书。
WCF因为是面向服务的程序,所以对信息安全的要求就比较高,它基于的假设就是如果消息是不安全的,因为一旦被截获,就可以破译,这个等于安全形同虚设。任何人都可以冒充客户端发送消息。
此外目前我所知道的不需要证书的安全策略是基于Windows 域账号的,这个针对的是企业内部局域网。
这个是主要原因:WS-Secrity安全规范,要求使用X.509证书。
来源:http://social.msdn.microsoft.com/Forums/zh-CN/wcfzhchs/thread/39546ca5-71e7-4e91-9d19-03f888f0cde9/