基于JWT的<img/>标签身份验证?

时间:2015-07-26 12:53:32

标签: html image authentication single-page-application jwt

假设我有一个单页面应用程序,它使用JWT令牌对后端REST api进行身份验证。在执行REST请求时,我在http标头内传输JWT令牌。到目前为止,非常好。

现在,假设我想从服务器下载图像,我希望只有经过身份验证的用户才能访问该图像。在服务器上,这没有问题:只需定义一个传递图像的路由,并在该路由中验证JWT令牌。

但是:如何将令牌从客户端转移到服务器?如果我使用常规<img ...>标记,则无法将标记附加为http标头。我该怎么办?

我基本上可以考虑添加令牌,例如base64编码,查询字符串,但似乎不是很安全,因为令牌然后出现在浏览器的历史记录中。另一方面,如果不使用JavaScript完全加载图像,我想不出另一种方法。

任何提示?

1 个答案:

答案 0 :(得分:1)

如果我想到Amazon S3,您需要一个签名的网址。正如您已建议在查询字符串中添加令牌一样没问题。

关于安全性:我认为这是令牌的到期日期问题。由于令牌无效,因此最好使用签名网址:

  1. 获取JWT
  2. 获取带有该令牌的签名网址
  3. 使用该网址检索img
  4. 通过这种方式,您可以独立于JWT控制签名URL的过期,还可以定义用于签名URL的令牌长度。