首页 文章

从自定义AuthorizationFilterAttribute调用持有者令牌验证

提问于
浏览
0

我有一个MVC / Angular应用程序,它实现基于cookie的身份验证,以便有一个机制来授权/验证用户,无论控制器操作是返回MVC页面还是Json结果 . 为简单起见,我的web api项目是Web解决方案的一部分,因此可以一次性轻松部署它们 . 现在我有一个供应商想要制作json或可能的xml数据请求 . 我正在使用WebApi 2和MVC 5所以我需要创建另一个API . 我的要求是

  • 在网站内托管Api,以便于部署

  • 使用承载令牌保护Api

  • 不做其他代码更改我无法抑制API请求的cookie,因为我需要对每个回调进行更改(客户端脚本不是非常集中......我们正在学习Angular,因为我们正在构建站点)我只是请求数据,我可以绕过使用Authorize属性并创建一个派生自AuthorizationFilterAttribute的自定义属性,仅用于供应商Api调用 . 我还有一个从OAuthAuthorizationServerProvider派生的简单授权服务器提供程序 . 我可以创建一个令牌并将其作为auth头中的承载令牌发送回我的自定义过滤器,没有任何问题 . 我现在的问题是什么?我是否需要创建从OAuthAuthorizationServerProvider派生的我的类的每个请求实例,并在该类上调用覆盖进行身份验证? (我正在使用StructureMap)或者还有另一种方法,我只是缺少 . 我可以找到一百万个创建过滤器来处理基本身份验证的例子,但到目前为止我发现的有关持票人的一切都使用katana管道来验证持票人令牌

1 回答

  • 0

    这比我想象的容易 . 通过向需要承载令牌的 endpoints 添加自定义Authorization属性 .

    [BearerTokenAuthorizationFilter(Role = "Vendor")]
       [Route("api/v1/purchaseorders/{records:int?}")]
       [ResponseType(typeof(Dictionary<string, VendorPurchaseOrder>))]
       public IHttpActionResult GetNewPurchaseOrders(int records = 0)
    

    这完全忽略了cookie .

相关问题