如何验证通过URL发送的Web Api 2 Owin令牌?

时间:2017-05-04 13:54:23

标签: angularjs cordova asp.net-web-api owin

TL; DR版本
我的Cordova AngularJS应用程序有一个情况,我需要打开浏览器并发出请求。但我发现我无法在此请购单上发送标题,因为$ window不接受它们。但是我可以用URL发送它 如何验证通过Web API上的URL收到的令牌?

详细版本

我正在使用AngularJs和ngCordova构建Cordova应用程序。在过去的几天里,我尝试下载一个PDF文件并将其保留给用户,这样他就可以随时阅读。但我所能实现的是在后台使用CordovaFileTransfer下载它(没有Android下载管理器)并通过文件浏览器应用程序访问它(因为该文件没有出现在传统的下载文件夹/应用程序中),这对我不利(我会很乐意接受任何关于此的事情。)

所以我决定尝试另一种方法。使用CordovaInAppBrowser我设法成功下载了我的文件,但只是没有任何授权令牌,因为插件不支持任何标题。

如果我可以在URL上发送有效令牌,CordovaInAppBrowser可以正常工作。但我不知道如何在Web Api上手动验证它。我发现这两个页面上有相关信息,但我无法理解它在我的应用程序中使用。

Retrieving bearer tokens from alternative locations in Katana/OWIN
Passing the access token on the URL

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

无论您是要从标头还是从URL查询字符串中提取令牌,原理都是一样的;您需要从请求中提取数据以验证令牌。

我使用了两种方法,具体取决于你想要做什么。

第一种方法是通过覆盖AuthorizeAttribute甚至普通ActionFilterAttribute来创建自定义属性。有关此主题的大量资源,但您可以找到一些信息herehere。如果您不想在所有API方法和API控制器上执行此操作,则此方法很有用。您只需将自定义属性放在所需的位置即可。

第二种方法是创建自定义OWIN中间件Herehere您可以找到有关如何执行此操作的大量资源。这种方法更加集中,因为所有的API调用都会通过它。

相关问题