【问题标题】:Invoking bearer token validation from a custom AuthorizationFilterAttribute从自定义 AuthorizationFilterAttribute 调用不记名令牌验证
【发布时间】:2016-02-24 17:23:12
【问题描述】:

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

  1. 在网站内托管 Api 以便于部署
  2. 使用 Bearer 令牌保护 Api
  3. 不做其他代码更改 我无法抑制 API 请求的 cookie,因为我需要对每个回调进行更改(客户端脚本不是很集中......我们在构建网站时正在学习 Angular) 由于该供应商仅请求数据,因此我可以绕过使用 Authorize 属性并为仅供应商的 Api 调用创建从 AuthorizationFilterAttribute 派生的自定义属性。我还有一个从 OAuthAuthorizationServerProvider 派生的简单授权服务器提供程序。 我可以创建一个令牌并将其作为身份验证标头中的不记名令牌发送回我的自定义过滤器,没有问题。我现在的问题是什么?我是否需要创建从 OAuthAuthorizationServerProvider 派生的类的每个请求实例并调用该类的覆盖以进行身份​​验证? (我正在使用结构图) 还是有另一种我只是想念的方式。我可以找到一百万个创建过滤器来处理基本身份验证的示例,但是到目前为止我发现的关于承载的所有内容都使用 katana 管道来验证承载令牌

【问题讨论】:

    标签: security oauth-2.0 asp.net-web-api2 custom-attributes bearer-token


    【解决方案1】:

    这比我想象的要容易。通过向需要不记名令牌的端点添加自定义授权属性。

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

    这完全忽略了 cookie。

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2021-05-12
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2020-08-29
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多