Gol*_*den 7 html authentication image jwt single-page-application
假设我有一个单页面应用程序,该应用程序使用JWT令牌针对后端REST api进行身份验证。当执行REST请求时,我将JWT令牌传输到http标头中。到目前为止,一切都很好。
现在,假设我想从服务器下载图像,并且我只希望认证用户可以访问该图像。在服务器上,这没有问题:只需定义一个传递图像的路由,然后在该路由中验证JWT令牌。
但是:如何将令牌从客户端转移到服务器?如果使用常规<img ...>标签,则无法将令牌附加为http标头。我该怎么办?
我基本上可以考虑将令牌(例如base64编码)添加到查询字符串中,但这似乎并不十分安全,因为令牌随后会出现在浏览器的历史记录中。另一方面,如果不完全使用JavaScript加载图像,则无法想到另一种方法。
有什么提示吗?
如果我想到 Amazon S3,那么您想要的就是签名的 url。正如您已经建议的那样,向查询字符串添加令牌就可以了。
关于安全性:我认为这是令牌有效期的问题。由于令牌不会失效,因此最好使用签名 URL:
通过这种方式,您可以独立于 JWT 控制签名 URL 的过期时间,还可以定义用于签名 URL 的令牌的长度。