检查请求是否来自带有OWIN的应用程序本地服务器
本文关键字:应用程序 服务器 OWIN 是否 请求 检查 | 更新日期: 2023-09-27 18:12:05
我需要为我的Hangfire仪表板创建一个authorizationfilter
它运行在Azure VM上,按照设计应该只接受来自本地请求的请求。
我想创建一个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;
}
}
我在自定义CookieAuthenticationProvider
上工作时遇到了类似的问题,其中只有IOwinContext
是公开的。context.Request
没有暴露IsLocal
属性,但是以下是可用的:
context.Request.Uri.IsLoopback
对于127.0.0.1
和localhost
请求,属性为true
。
如何检查请求上下文中的标头?
context.Request.Headers["Referer"]
如果该值包含localhost或127.0.0.1或任何您限制的值。
注意:此报头可能被欺骗。也许有更好的方法来限制对仪表板的访问。需要上网吗?
可以使用HttpRequest.IsLocal吗?这将告诉您请求的IP地址是否与服务器的IP地址相同。
return context.Request.IsLocal;