2013-11-26 51 views
0

我已经MVC WebAPI公开,并且只想接受来自127.0.0.1的请求。原因是要使用此WebAPI函数的应用程序将作为virutal应用程序驻留在相同的IIS服务器上。如何保护WebAPI只允许来自特定主机

可能有人请建议如何上面就可以实现,以及是否有很多优雅的解决方案。

回答

1

覆盖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()); 
} 
0

你需要通过定制软件做这些?


您可能会设置iis绑定到只有内部地址(甚至可能更改端口),并确保服务器的防火墙不公开该绑定。

你能明白这个理由吗?如果你只绑定localhost而不公开你的WebApi,你可以直接从你的代码中调用api方法。

相关问题