保护Web服务

时间:2010-04-21 09:36:15

标签: asp.net wcf security x509certificate

我继承了一个传统的三层Web应用程序,其中包含用于UI的ASP.net 2.0,用于中间层的.Net Web服务(ASMX)和用于数据库的SQL Server 2005。这是一个内部网应用程序,只有用户是公司员工。目前,该应用程序使用Active Directory(AD)身份验证。

在登录屏幕上,向用户显示用户名/密码对话框。中间层对AD进行简单调用以检查用户名/密码。如果没问题,则生成sessionId guid并将其发送回UI。然后,在会话中的UI的每个后续调用中传递此sessionId。在处理请求之前,中间层中的所有方法首先根据SQL Server中的简单会话表检查sessionID的有效性。

我现在需要将应用程序的Web服务中间层提供给可用于公共Internet的新UI。我不需要担心身份验证,因为它将由新UI管理。但是,我不希望在没有任何安全性的情况下完全打开Web服务。我只想确保调用服务的系统有权这样做。我不想让新UI负担不得不维护当前使用的sessionIds。

有关从新UI调用时保护服务的最佳方法的任何观点?我想我可以使用x509证书,但我之前已经这样做了,所以我不知道任何缺点(性能?)或如何去实现。

使用.Net 3.5开发了新的UI。我们可以在中间层安装.Net 3.5,所以我想我们可以从使用WCF中受益吗?

1 个答案:

答案 0 :(得分:0)

我不相信这是一个适合加密的问题。最好使用IP限制来限制对Web服务的访问。如果这些数据通过开放式互联网等不安全的连接进行传输,那么可以使用ssl来验证客户端和服务器以及保持传输的数据安全。您也可以使用VPN,这可能是最容易实现的。

我关注你的会话表。我认为这会引入撤销用户帐户的延迟时间。如果此会话没有过期时间,则无法撤消用户帐户。用户登录后如何启动它们?

一种解决方案是让ASMX Web服务查询每个请求的活动目录,如果您的AD服务器没有负载,那么这应该没问题。请记住,AD本身就是一个非常传出的数据库。