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