2016-10-06 5 views
1

Мне нужно создать AuthroizationFilter для моей панели инструментов Hangfire.Проверить, что запрос поступает с сервера, локального приложения, с OWIN

Его работа на Azure VM и по дизайну должна принимать только запросы из местных запросов.

Я хочу создать AuthorizationFilter, который проверяет только те запросы из веб-браузера на той же виртуальной машине, что и веб-приложение.

нужно определить эту форму в 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 

Свойства было true для 127.0.0.1 и localhost запросов.

0

насчет проверки заголовков в контексте запроса?

context.Request.Headers["Referer"] 

Если значение включает localhost или 127.0.0.1 или что вы его ограничиваете.

ВНИМАНИЕ: этот заголовок может быть подделан. Возможно, есть лучший способ ограничить доступ к панели управления. Нужен ли доступ в интернет?

0

Вы можете использовать HttpRequest.IsLocal? Это скажет вам, соответствует ли IP-адрес запроса IP-адресу сервера.

return context.Request.IsLocal;