【问题标题】:How a token is generated with the help of secret key?如何在密钥的帮助下生成令牌?
【发布时间】:2017-03-06 11:28:57
【问题描述】:
在基于令牌的身份验证中,用户将通过用户名和密码形式的某种形式的验证来验证自己。服务器需要验证用户凭据。一旦服务器验证了用户凭据,服务器就会向用户颁发一个签名的令牌。这里服务器可以利用这个秘密来生成一个令牌。
我在一些 config.js 文件中给出了一个密钥
module.exports = {
'secretKey': '12345-67890-09876-54321',
'mongoUrl' : 'mongodb://localhost:27017/conFusion'
}
所以我想知道的是服务器如何利用这个密钥来创建和验证 JSON Web 令牌...
【问题讨论】:
标签:
javascript
authentication
token
【解决方案1】:
关于JWT and how they work的文章很多,所以我将跳过这一部分,因为我不想只是粘贴整篇文章。
JWT 的好处是您可以在其中放入数据(通常是有关您的用户的信息)。
这样做,您不必查询您的数据库来对它们进行身份验证,这将为您的 API / 服务带来更快的响应时间。
因为您将信息放入您的令牌(可能是敏感数据,甚至只是邮件和姓名),所以您必须对其进行加密,以便除了您之外没有人可以阅读它。
秘密钥匙来了:您可以将其视为门钥匙(是的,就像在现实世界中一样)。它允许您加密(关上门)您的数据,这样没人能理解它;它允许您解密它(打开门),以便您可以阅读它。
由于密钥在您的服务器上,并且您是唯一可以访问它的人,因此您是唯一可以解密和读取 JWT 的人。
这只是对其工作原理的概述,我希望它能很好地解释密钥的作用,有关 JWT 的更多信息和详细信息,this article 很好。
最好的问候,