我需要构建一个简单的 Web 服务来通过 Internet 将数据输入和输出 HR 系统(这是一个托管解决方案)。我将 IIS 和 ASP.Net 与 .Net 2.0 一起使用。
经过研究,有几种方法可以确保 Web 服务的安全 - 我正在就选择哪种方法提出一些建议,并对优缺点提出一些看法。
这些是我知道的方法:
基于 SSL 的 SoapHeaders
在 Soap 标头中发布 UID/PWD 并实现 SOAP 扩展(链接)。
实现起来非常简单,并且通过 SSL 应该非常安全。由于相对简单,这是迄今为止我的首选选择。此外,由于历史原因,我需要从 VBScript 中使用 Web 服务,因此能够处理简单的 SOAP 是一个额外的好处。
但是,有什么注意事项吗?我会让客户抱怨这是一个安全风险吗?
将 WCF 与 TransportWithMessageCredential 一起使用
我发现很多旧文章都提到了 WS,如果我没记错的话,这就是 WCF 现在提供的吗?这个微软链接有一个入门。
如果我理解正确,这将在客户端和服务器之间使用基于证书的安全性进行身份验证。这是正确的还是我完全错了?
我怀疑这将是一项更大的工作,至少在实施方面是这样。此外,我将无法直接从 VBScript 访问 Web 服务,因此必须编写一个调用调用的 dll,然后在本地部署它——对吗?
这甚至在.Net 2.0中可用吗?
其他方法
- 我可以禁止匿名访问 asmx 文件并使用依赖 IIS 通过质询/响应进行身份验证。这在我的场景中实际上很实用,但感觉非常不优雅(也不知道如何从 VBScript 中实现这一点)。
- 将 UID 传递给方法调用是 SoapHeader 的一个可怜的表亲,所以我不会使用它。
对于解决此问题的最佳方法的任何建议,我将不胜感激。如果有人对为什么 Soap Headers 是安全的有一个很好的论据,那么我很想听听它,因为这似乎是最简单的使用,只要它“足够安全”。