有没有办法在不修改服务方法的情况下保护Web服务?

时间:2011-03-24 08:25:11

标签: .net web-services iis

我们有一些现有的网络服务需要某种基本安全措施,以防止未经授权的第三方拨打电话。

如果可能的话,最好不要改变服务。就像在服务方法中添加额外的参数来为每次调用传递一个令牌一样。

一个想法(如果可能)是有一个IIS模块,它拦截对服务的所有调用并检查标头的标记。当令牌正确时,它允许请求通过或以其他方式取消它。这样,第三方只需要提供额外的http头字段,一旦我们给他们密钥,我们就不必更改服务了。

这引出了一些问题:

是否可以使用托管IIS模块执行此操作? (或者必要时不受管理)。如果是这样,在Visual Studio中使用WCF或Web引用连接到Web服务时传递额外的头字段有多难。

如果还有其他选项,我希望听到它们符合我的要求。感谢。

2 个答案:

答案 0 :(得分:1)

通过SSL进行客户端身份验证可以解决您的问题。无需修改您的Web服务,但客户端需要SSL证书才能使用它。见http://msdn.microsoft.com/en-us/library/aa292114%28v=vs.71%29.aspx

答案 1 :(得分:1)

您可以使用基本/摘要/ Windows身份验证。您可以在IIS中进行设置。使用起来相当简单。微软有一个run-through post on this here。这很容易在Visual Studio中设置。

有关使用此方法保护Web服务的更深入信息和step-by-step instructions in this 15 seconds article

这些都不需要您更改Web服务本身。但这些只提供基本的安全性。正如另一个用户建议的那样,使用SSL可以提供更高级别的安全性,但要求Web服务在其自己的(子)域或应用程序中运行。

如果您最终考虑更改网络服务并向其添加身份验证,请考虑阅读this CodeProject article