Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 从自定义AuthorizationFilterAttribute调用承载令牌验证_Security_Oauth 2.0_Asp.net Web Api2_Custom Attributes_Bearer Token - Fatal编程技术网

Security 从自定义AuthorizationFilterAttribute调用承载令牌验证

Security 从自定义AuthorizationFilterAttribute调用承载令牌验证,security,oauth-2.0,asp.net-web-api2,custom-attributes,bearer-token,Security,Oauth 2.0,Asp.net Web Api2,Custom Attributes,Bearer Token,我有一个MVC/Angular应用程序,它实现了基于cookie的身份验证,从而有一个单一的机制来授权/验证用户,而不管控制器操作是返回MVC页面还是Json结果。为简单起见,我的web api项目是web解决方案的一部分,因此可以轻松地一次性部署它们。 现在我有一个供应商希望对数据进行json或xml请求。 我正在使用WebApi 2和MVC 5 所以我需要创建另一个API。我的要求是 在网站内托管Api以便于部署 使用承载令牌保护Api 不进行其他代码更改 我无法抑制API请求的cookie

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

  • 在网站内托管Api以便于部署
  • 使用承载令牌保护Api
  • 不进行其他代码更改 我无法抑制API请求的cookie,因为我需要对每个回调进行更改(客户端脚本不是非常集中……我们在构建站点时学习了Angular) 由于该供应商仅请求数据,因此我可以绕过Authorize属性,为仅供应商的Api调用创建一个从AuthorizationFilterAttribute派生的自定义属性。我还有一个从OAuthAuthorizationServerProvider派生的简单授权服务器提供程序。 我可以创建一个令牌,并将其作为身份验证头中的承载令牌发送回我的自定义筛选器,而不会出现任何问题。我现在的问题是什么?我是否需要创建从OAuthAuthorizationServerProvider派生的类的每个请求实例,并调用该类上的覆盖以进行身份验证?(我正在使用StructureMap) 或者是我错过了另一条路。我可以找到一百万个创建过滤器来处理基本身份验证的例子,但是到目前为止,我找到的关于Bear的所有内容都使用katana管道来验证Bear令牌

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

    [BearerTokenAuthorizationFilter(Role = "Vendor")]
       [Route("api/v1/purchaseorders/{records:int?}")]
       [ResponseType(typeof(Dictionary<string, VendorPurchaseOrder>))]
       public IHttpActionResult GetNewPurchaseOrders(int records = 0)
    
    [BealerTokenAuthorizationFilter(Role=“Vendor”)]
    [路由(“api/v1/purchaseorders/{records:int?}”)]
    [ResponseType(typeof(Dictionary))]
    公共IHttpActionResult GetNewPurchaseOrders(int记录=0)
    
    这完全忽略了cookie