我有一个 Web API 2 OData v3 服务,它通过 IdentityServer Bearer Token Authentication / Access Token Validation 得到保护。客户端是一个 SPA 应用程序。我成功地使用 oidc-token-manager.js 库进行身份验证,并将 Authorization http 标头中的访问令牌传递给使用 XMLHttpRequest 的常规 odata crud 操作。
我的 odata 服务还支持用于上传和下载文件的流媒体。同样,对于上传文件,我可以使用 XMLHttpRequest 在 Authorization http 标头中传递访问令牌。
但是,要下载文件,我想使用带有 href 的锚标记(odata 文件下载 url 通常采用 /odata/myfiles(1)/$value 格式)。当用户单击链接时,它应该下载文件(odata 服务将内容处置附件标头添加到响应中)。
但是,无法在此 GET 请求的 Authorization 标头中添加访问令牌,因为它是由浏览器创建的。是否可以将访问令牌作为查询字符串添加到 href 中的 url(所谓的预签名 url)?这甚至是一个好(安全)的想法吗?在我在 Startup.cs 中使用 app.UseIdentityServerBearerTokenAuthentication 的服务器上,这是否能够在查询字符串中查找访问令牌以及 Authorization http 标头?
非常感谢
雷姆科