我已经创建了一个自定义的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
);
}
}这不会将处理程序注册到管道中。谢谢
发布于 2015-01-16 16:02:56
如果可行,您可以应用IP -addresses的白色/blacklisting,例如,在您的OAuthAuthorizationServerProvider实现中通过覆盖ValidateTokenRequest -method截获请求时。无论哪种方式,您都可以将当前委托处理程序重构为一个OWIN中间件组件,该组件在命中任何后续层之前或在您的提供者中执行-或者与上述提供者中的适用部分一起重用。
关于OWIN中间件,我在GitHub上搜索到的第一个热门项目是名为HttpTrackingMiddleware:https://github.com/springcomp/HttpTrackingMiddleware的项目,它看起来很有前途。
总而言之,您在这里有几个选择:拥有中间件、提供者或尝试在以下位置注册您的处理程序:
GlobalConfiguration.Configuration.MessageHandlers.Add(new CheckIpMessageHandler());祝好运!
https://stackoverflow.com/questions/27894947
复制相似问题