首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Owin OAuthAuthorizationServer添加DelegatingHandler

向Owin OAuthAuthorizationServer添加DelegatingHandler
EN

Stack Overflow用户
提问于 2015-01-12 11:34:04
回答 1查看 2.1K关注 0票数 1

我已经创建了一个自定义的OAuthAuthorizationServerProvider,它具有以下方法:

代码语言:javascript
复制
override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)  
override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)  
override Task TokenEndpoint(OAuthTokenEndpointContext context)    

我想添加一个自定义的DelegatingHandler来阻止基于IP的访问。

但我找不到任何地方注册管理员。

代码语言:javascript
复制
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
        );
    }
}

这不会将处理程序注册到管道中。谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-16 16:02:56

如果可行,您可以应用IP -addresses的白色/blacklisting,例如,在您的OAuthAuthorizationServerProvider实现中通过覆盖ValidateTokenRequest -method截获请求时。无论哪种方式,您都可以将当前委托处理程序重构为一个OWIN中间件组件,该组件在命中任何后续层之前或在您的提供者中执行-或者与上述提供者中的适用部分一起重用。

关于OWIN中间件,我在GitHub上搜索到的第一个热门项目是名为HttpTrackingMiddleware:https://github.com/springcomp/HttpTrackingMiddleware的项目,它看起来很有前途。

总而言之,您在这里有几个选择:拥有中间件、提供者或尝试在以下位置注册您的处理程序:

代码语言:javascript
复制
GlobalConfiguration.Configuration.MessageHandlers.Add(new CheckIpMessageHandler());

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27894947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档