我们有一个使用JWT作为API身份验证方式的有角项目
除了下载文件之外,一切正常,它可以很大(例如10 GB)
我读了Download files in Javascript with OAuth2建议我们将令牌作为查询参数传递]
但是当我用Google搜索它时,我发现很多网站都不推荐这样做,我想知道还有什么替代方法
所以有比下载文件更安全的解决方案,而不是在查询参数中传递文件?
类似于AWS S3签名的URL,建议您生成一个特殊的JWT令牌,仅用于下载文件并使用查询参数将其传递:
1)客户端调用POST /request-download/[fileID]
-请求授权以下载文件。
2)服务器返回仅用于下载响应中的文件的特殊JWT
3)客户端使用GET /path-to-file?token=[the-token-from-response]
下载文件>
您只需要在服务器上实现自定义身份验证/授权逻辑即可接受文件的特殊JWT令牌。
您可以跳过第一步,只返回特定文件的下载令牌以与每个文件一起下载。
[我的意思是“用于下载文件的特殊JWT令牌”是标准的JWT令牌,该令牌授权持有人仅下载单个文件,而没有其他权限-您可以将fileId
作为声明传递给令牌,设置到期时间可以满足您的需求。然后,您可以在下载端点上验证令牌的有效性。轻松。