Добавление DelegatingHandler в Owin OAuthAuthorizationServer

1

Я создал пользовательский OAuthAuthorizationServerProvider который имеет следующий метод:

override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)  
override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)  
override Task TokenEndpoint(OAuthTokenEndpointContext context)    

Я хотел бы добавить пользовательский DelegatingHandler для блокировки доступа на основе IP.
Но я не могу найти места для регистрации обработчика.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        List<DelegatingHandler> ipApi = new List<DelegatingHandler>();
        ipApi.Add(new CheckIpMessageHandler());
        var routeIpHandlers = HttpClientFactory.CreatePipeline(new HttpControllerDispatcher(config), ipApi);

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: null,
            handler: routeIpHandlers
        );
    }
}

Это не регистрирует обработчик в конвейере. благодаря

  • 0
    Не можете ли вы создать IAuthorizationFilter и добавить его глобально?
  • 0
    ActionFilters - это концепция MVC / WebAPI. Я думаю, что промежуточное программное обеспечение OAuth2 (OAuthAuthorizationServerProvider) перехватывает запрос, даже не достигая фреймворков верхнего уровня.
Теги:
asp.net-web-api
authorization
owin

1 ответ

1

Если это возможно, вы можете применить white-/черный список IP -addresses, например, при перехвате запросов в реализации OAuthAuthorizationServerProvider путем переопределения ValidateTokenRequest -method. В любом случае, вы можете реорганизовать свой текущий обработчик делегирования в компонент промежуточного программного обеспечения OWIN, который будет выполняться перед ударом по любым последующим слоям или у вашего провайдера, или повторно использовать с соответствующими частями в пределах указанного поставщика.

Что касается промежуточного программного обеспечения OWIN, мой поиск был очень первым, и репо в GitHub было проектом под названием HttpTrackingMiddleware: https://github.com/springcomp/HttpTrackingMiddleware, который выглядит многообещающим.

В общем, у вас есть несколько вариантов: промежуточное ПО OWIN, провайдер или, по большому счету, старайтесь в последний раз зарегистрировать своего обработчика по адресу:

GlobalConfiguration.Configuration.MessageHandlers.Add(new CheckIpMessageHandler());

Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню