【问题标题】:How can I validate Web Api 2 Owin Token send via URL?如何验证通过 URL 发送的 Web Api 2 Owin 令牌?
【发布时间】:2017-10-02 17:59:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我使用了两种方法,具体取决于您要在哪里执行此操作。

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2014-07-06
      • 1970-01-01
      • 2019-01-03
      • 2014-10-05
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 2017-06-25
      相关资源
      最近更新 更多