是通过电子邮件安全在查询字符串中发送JWT吗?

时间:2016-12-29 06:17:29

标签: security authentication oauth-2.0 jwt bearer-token

我正在实施一个简单的无密码身份验证系统。

Auth服务器将生成JWT(基于用户的电子邮件),并以http://www.CLIENT-WEBSITE.com/?jwt=aaaa.bbbb.cccc格式向用户的电子邮件发送链接。

然后,客户端网站将该JWT存储在本地存储中,并在所有后续请求中将其发送到Auth Header(承载方案)中,以便访问受保护的API服务器。它还会立即重定向到客户的主页,因此如果用户选择为页面添加书签,则他们不会在URL中为JWT添加书签。

这是一个安全的实施吗?如果不是,通过电子邮件将JWT从Auth服务器发送到客户端会有什么更好的方法?

1 个答案:

答案 0 :(得分:2)

由于电子邮件是使用您可能不拥有的SMTP服务器发送的,并且通讯渠道无法加密,因此通常的答案是,因为邮件可能会被截获。

如果您需要一个到SMTP和邮件的TLS频道,并且您信任邮件服务器只接受TLS来下载邮件,那么答案可能是可能是,具体取决于IT持有服务器的基础设施。

如果邮件是使用用户的公钥加密的,邮件是安全的,但您可能没有该公钥

通过邮件发送JWT是有风险的,我建议使用添加到电子邮件链接的双因素系统。例如用户知道的内容,如密码或私人数据,用户拥有的内容,例如电话号码(发送短信)或数字证书(客户端生成的加密密钥对)。如果双因素验证正确,则发出JWT

已编辑 - 已添加用例

根据您的评论,您处于 MAY BE场景。管理SMTP和电子邮件服务器可以确保TLS加密可以保护服务器之间的消息传输,直到将消息传递给客户端。

在此之后你失去了控制。这意味着用户可以下载电子邮件,转发电子邮件或仅存储在其计算机中。 JWT是自包含的,并且在到期时间之前有效,因此拥有令牌的任何人都拥有房屋的钥匙。

链接的格式并不重要,但我会将http更改为https

您必须评估风险等级是否可接受,或者发布您需要的JWT以确保身份添加第二个因素检查,就像我建议的那样。最后,我们必须在安全性和可用性之间达成妥协