检查请求是否来自带有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;
     }
}

检查请求是否来自带有OWIN的应用程序本地服务器

我在自定义CookieAuthenticationProvider上工作时遇到了类似的问题,其中只有IOwinContext是公开的。context.Request没有暴露IsLocal属性,但是以下是可用的:

context.Request.Uri.IsLoopback

对于127.0.0.1localhost请求,属性为true

如何检查请求上下文中的标头?

context.Request.Headers["Referer"]

如果该值包含localhost或127.0.0.1或任何您限制的值。

注意:此报头可能被欺骗。也许有更好的方法来限制对仪表板的访问。需要上网吗?

可以使用HttpRequest.IsLocal吗?这将告诉您请求的IP地址是否与服务器的IP地址相同。

return context.Request.IsLocal;