我有一个ASMX Web服务,它有许多可以调用的方法。但是,我想限制某些方法,以便调用者需要进行身份验证才能调用它们,或者更好的只能从运行服务的本地服务器调用。
基本上,需要保护的方法将由本地服务器上的Microsoft Windows Scheduler调用。
这两种选择是否可行,以及实现这一目标的最佳方式是什么。
答案 0 :(得分:1)
在您要保护的Web服务的顶部,您可以执行以下操作:
if (!Request.IsLocal)
{
Response.StatusCode = 401;
Response.StatusDescription = "Unauthorized";
return null;
}
您还可以检查它们是否通过IsAuthenticated
属性进行了身份验证。
答案 1 :(得分:0)
在您提到的两种方法中,到目前为止最简单的方法是限制对本地服务器的访问。您可以通过代码(如另一条评论所述)或IIS本身的管理来执行此操作。
如果您加载IIS管理器并选择asmx文件所在的文件夹,您将在右侧看到“IP地址和域限制”部分。打开它,添加默认拒绝规则,然后添加允许规则127.0.0.1。
请注意,使用此方法会限制此文件夹中的所有服务,因此如果不需要或不需要,您可能需要将其移动到自己的文件夹中。