我在我们的生产Web服务器上有一个带有几个Web方法的Web服务(ASMX)。 在另一个内部Web服务器(不公开)上,我有另一个将使用ASMX的公共Web方法的Web站点。 有哪些最佳方法可以保护Web服务,使只有内部Web服务器可以访问公开Web服务器上运行的Web服务?
我在我们的生产Web服务器上有一个带有几个Web方法的Web服务(ASMX)。 在另一个内部Web服务器(不公开)上,我有另一个将使用ASMX的公共Web方法的Web站点。 有哪些最佳方法可以保护Web服务,使只有内部Web服务器可以访问公开Web服务器上运行的Web服务?
最简单的方法之一是在消息的soap头部传递凭据。因此,每个调用都会传递所需的信息来确定用户是否被授权。WSE使其中一些变得更加容易,但关于这个过程最简洁的描述可以在Rocky Lhotka的业务对象书中找到。我收到了出版商的很多书来审查,而这本书有最好的解释。
假设您没有使用WCF的选项,我建议使用WSE 3(Web Service Enhancements)。您可以在MS's site获取工具包/SDK。
为了限制访问仅限于内部机器(我认为您的问题是这样的),我会在IIS中设置一个单独的网站,并将其设置为仅响应您服务器的内部IP地址。
使用IIS的目录安全IP地址限制,并仅限于访问该内部Web服务器的IP地址。
如果您无法实现上述操作,并且无法在目录中设置用户名/密码,则使用WSE向服务添加用户名/密码,或者查看证书(如果您想要一些有趣的操作) grin
如果只有内部服务器将访问asmx文件?您可以在IIS中设置它们,放置一些IP限制在网站上。在属性中,进入目录安全性,然后选择“IP地址和域名限制”。
此外,对于密码,WSE 3是新的首选,但我在Apress的书籍“Pro ASP.NET 2.0 in C# 2005”第34章中找到了一个简单的方法。(请注意,此书的新版本省略了此章节。)该部分是基于自定义票证的身份验证。
在这一刻,我想到的是在IIS上进行IP过滤。快速应用,应该可以在您的情况下起作用。