【问题标题】:Different authentication mechanisms for different asp.net web api controllers不同asp.net web api控制器的不同认证机制
【发布时间】:2013-12-23 03:42:08
【问题描述】:

我正在使用 ASP.NET web api 构建一个 RESTful web 服务。我有 2 个控制器,一个控制器我想使用基本身份验证,另一个控制器我想使用基于令牌的身份验证。这可能吗?

谢谢, 普雷迪普

【问题讨论】:

    标签: asp.net authentication asp.net-web-api


    【解决方案1】:

    查看 Web API v2 中的新身份验证过滤器。它们专门用于使用身份验证方法注释控制器或操作。

    您可以直接在控制器中实现身份验证方法 - 或者使用 OWIN/Katana 回调身份验证中间件。

    请参见此处了解基本身份验证中间件: https://github.com/thinktecture/Thinktecture.IdentityModel/tree/master/source/Thinktecture.IdentityModel.Owin/Basic%20Authentication

    【讨论】:

    • 我删除了基于使用ClaimsAuthorizationManager 查看身份验证类型的答案。我想使用身份验证过滤器是一个更清洁的解决方案。
    • 感谢您指出正确的方向。我最终使用了消息处理程序而不是过滤器。
    • 链接失效
    【解决方案2】:

    我最终创建了两个 MessageHandler。一个做基本认证,另一个做基于令牌的认证。然后我设置了每个路由的消息处理,如下所示:

        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
    
            // Web API routes
            config.MapHttpAttributeRoutes();
    
            config.Routes.MapHttpRoute(
                name: "BasicAuthApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional },
                constraints: new { controller = "controller1" },
                handler: new BasicAuthMessageHandler() { InnerHandler = new HttpControllerDispatcher(config) }
            );
    
            config.Routes.MapHttpRoute(
                name: "TokenAuthApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional },
                constraints: new { controller = "controller2" },
                handler: new TokenAuthMessageHandler() { InnerHandler = new HttpControllerDispatcher(config) }
            );
        }
    

    【讨论】:

    • 在我看来,这是比使用过滤器更好的解决方案。我也这样做。我为每条路线设置我的处理程序。身份验证应该在处理程序而不是过滤器中完成。
    猜你喜欢
    • 2012-09-24
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多