2016-10-06 77 views
1

我需要为我的Hangfire仪表板创建一个AuthroizationFilter。检查是一个请求来自服务器本地到OWIN

它在Azure虚拟机上运行,​​并通过设计应该只接受来自本地请求的请求。

我想创建一个AuthorizationFilter,它只验证Web应用程序运行在同一虚拟机上的Web浏览器的请求。

我需要确定这种形式的OwinContext: -

public class MyRestrictiveAuthorizationFilter : IAuthorizationFilter 
{ 
    public bool Authorize(IDictionary<string, object> owinEnvironment) 
    { 
     // In case you need an OWIN context, use the next line, 
     // `OwinContext` class is the part of the `Microsoft.Owin` package. 
     var context = new OwinContext(owinEnvironment); 

     // Allow all local request to see the Dashboard 

     return true; 
    } 
} 

回答

2

我也有类似问题上的自定义CookieAuthenticationProvider只有IOwinContext暴露工作。 context.Request没有暴露的IsLocal财产,但以下是可供选择:

context.Request.Uri.IsLoopback 

127.0.0.1localhost要求该物业是true

0

关于请求上下文检查标题是什么?

context.Request.Headers["Referer"] 

如果该值包括本地主机或127.0.0.1或任何你限制它。

小心:此标头可能被欺骗。可能有更好的方法来限制对仪表板的访问。它需要互联网接入吗?

0

你能用HttpRequest.IsLocal吗?这会告诉你,请求的IP地址是否与服务器的IP地址相同。

return context.Request.IsLocal; 
相关问题