【问题标题】:How to download a file secured with IdentityServer如何下载受 IdentityServer 保护的文件
【发布时间】:2017-08-15 13:55:28
【问题描述】:

我希望能够通过 API 调用下载文件。为了论证的缘故,假设它是一个自动生成的 PDF 文件。

我有两个问题:

  1. 锚标签不能在请求中添加Authorization标头,只有XHR可以。
  2. XHR 请求无法下载文件。

我的解决方案是编写带有[AllowAnonymous] 端点的API,它将access_token 作为参数。然后我手动验证访问令牌并返回 401 或流式传输 PDF。

有没有比这更好的解决方案,或者,如果这是最好的解决方案,我如何在 API 中验证 access_token

【问题讨论】:

  • 您可以使用客户端凭据 OAuth 流程。第一步,在 identityserver3 中创建 Web Api 作为客户端。第二步,使用客户端 id 和 secret 从 id 服务器获取访问令牌。第三步,在对 web api 的请求中添加一个带有“Bearer”令牌的授权标头。看这里:developerhandbook.com/c-sharp/…
  • 所以问题更多是 javascript/XHR 问题而不是 IdSvr?我们有一个返回生成文件的 API,它是一个受保护的端点(以通常的方式)。从该端点返回的是FileContentResult。尝试使用 AJAX 调用来调用该端点需要跳过通常的 javascript-download-a-file 箍。

标签: identityserver3 identityserver4


【解决方案1】:

这种方法完全没问题。

如果您想使用中间件来验证令牌 - 这取决于您使用的中间件。普通的 Microsoft JWT 不记名中间件有一些事件,您可以实现这些事件来从查询字符串中检索令牌。

身份服务器令牌验证中间件具有TokenRetriever 属性,它还允许您从多个/替代位置检索令牌。

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 2020-10-19
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多