【发布时间】:2012-07-24 15:34:36
【问题描述】:
如何保护 Javascript 客户端可以使用的 WCF 服务?有什么特定的安全模型吗?
我的理解是 WCF 支持使用传输和消息安全对数据进行有线加密。但是 WCF 仍然不完全安全,因为任何人都可以使用该服务(缺少身份验证)。只有“来回”移动的数据在通道上被加密。这还不够。因此,我们引入了相互身份验证并选择了证书作为凭证。客户端需要做的是:连同所有 SOAP 请求,他应该发送一个有效的证书(客户端凭证也包含公共和私人密钥,并且由 WCF 管理员颁发)这是由我的服务器信任的 CA 颁发。
我们使用 basicHttpBinding 是因为我们的客户端可以是 Javascript/Ipad/.Net/DBL 客户端。我们可以使用 .Net/SOAPUI/JAVA 客户端来使用这些服务。所以我们很擅长这种方法。
但今天在分析期间,我们发现 JavaScript 客户端无法使用我们的服务,因为它不支持相互身份验证(如果我错了,请纠正我)。即使它支持相互身份验证并将有效证书发布到服务器,我们也无法让所有客户端(Web 浏览器)提供客户端证书,因为它还包含公钥和私钥(请注意私钥!)和我的服务器盲目信任。
现在我有点困惑。有人可以建议一些 JavaScript 支持的安全模型,而不会影响任何安全性。类似 RESTful WCF 的东西。
我了解 JavaScript 不支持消息安全,它只支持传输安全。我不在乎数据是如何通过网络加密的。我关心的是客户端如何通过我的 WCF 服务进行身份验证。
非常感谢
【问题讨论】:
-
您可以尝试使用亚马逊等许多服务提供商使用的 HMAC 算法进行身份验证...
标签: javascript .net wcf rest wcf-security