我已经MVC WebAPI公开,并且只想接受来自127.0.0.1的请求。原因是要使用此WebAPI函数的应用程序将作为virutal应用程序驻留在相同的IIS服务器上。如何保护WebAPI只允许来自特定主机
可能有人请建议如何上面就可以实现,以及是否有很多优雅的解决方案。
我已经MVC WebAPI公开,并且只想接受来自127.0.0.1的请求。原因是要使用此WebAPI函数的应用程序将作为virutal应用程序驻留在相同的IIS服务器上。如何保护WebAPI只允许来自特定主机
可能有人请建议如何上面就可以实现,以及是否有很多优雅的解决方案。
覆盖DelegatingHandler
和编写自定义处理程序,它会检查请求的主机,如果符合您的标准然后继续或拒绝该请求。
public class CustomHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//check here for host of request
if(!criteria)
{
request.Properties.Add("Forbidden", true);
}
return base.SendAsync(request, cancellationToken);
}
}
注册此处理中WebApiConfig
作为
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new CustomHandler());
}
你需要通过定制软件做这些?
您可能会设置iis绑定到只有内部地址(甚至可能更改端口),并确保服务器的防火墙不公开该绑定。
你能明白这个理由吗?如果你只绑定localhost而不公开你的WebApi,你可以直接从你的代码中调用api方法。