2017-01-09 126 views
0

我正在阅读关于智威汤士的最近,我有一个时刻;我有一个想法,在我的脑海里似乎很棒,但我认为在结束时它并不是那么棒。智威汤逊全球+私密

我看到人们正在用单一密钥加密令牌以达到全球目的。如果我为每个用户生成全新的密钥,那么以后再加入两个字符串并使用输出来加密令牌会怎样?这将处理需要为不应再访问的用户创建黑名单等等。我错过了什么?因为我确信有人对我有类似的想法,并且由于某种原因它没有被广泛使用。我失去了什么?

回答

2

JWT使用发行者的私钥(通常是服务器)进行签名(未加密)。数字签名标识签名者并保护内容免遭更改。

如果您修改有效JWT的有效负载,签名或创建假令牌,服务器只会拒绝它。这就是为什么服务器不需要发布令牌的原因,因为如果令牌可信,它可以以加密方式进行验证

您可以为每个用户创建一个不同的密钥,但不是必需的,因为您要证明令牌已经由服务器发出信任包含在有效载荷中的数据,只需要一个密钥

+0

当然!对不起,你完全正确。这不是加密,而是签名。我不想处理已发布令牌的列表,但应该强制注销的用户列表 - 我更改用户的盐,并且此后他的令牌将无效。你认为我的概念有什么优势,还是没有深思熟虑? –

+0

在您建议或散列一组关键用户属性时更改用户的密钥是黑名单令牌强制JWT失效的正确替代方案。有些人不喜欢这种技术,因为打破JWT无状态并且需要在每个请求中访问数据库。他们更愿意让令牌过期并建立一个短暂的刷新时间。在每种情况下为您的项目选择最合适的选项 – pedrofb

+0

我明白您的观点。但为了验证令牌,您仍然需要查询您的黑名单数据库,因此我认为我的替代方案不是一种犯罪行为:D非常感谢您,我会考虑这一点,但很高兴知道这是可以接受的。 –