API 使用 json 网络令牌的身份验证 jwt-simple

API authentication using json web tokens jwt-simple

我正在使用 jwt-simple 创建一个 api 密钥。基本上它所做的是 encode(secret+data) 并将其与请求一起发送。我知道服务器将 decode(encode(secret+data)) 并验证它是一个有效的请求。 jwt-simple documentation:

中的示例代码
var jwt = require('jwt-simple');
var payload = { foo: 'bar' };
var secret = 'xxx';

// encode 
var token = jwt.encode(payload, secret);

// decode 
var decoded = jwt.decode(token, secret);
console.log(decoded); //=> { foo: 'bar' } 

我的问题是:

提前致谢。

看到这个post关于你对这个秘密的困惑:

关于您的问题:

  1. 是的,任何设法获得有效令牌的人都可以访问您的 API。因此,如果有人知道您用于签署令牌的密钥并且可以创建有效负载,则他可以使用 API。但通常的流程是:用户登录,你检查密码,如果密码正确,你给他一个有效的令牌。如果有人从该用户的计算机上获取了该令牌,您将无能为力。但是你可以让令牌过期,这样如果有人偷了一个令牌,它就不会在很长时间内有效。

  2. 您可以使用相同的应用程序范围内的秘密对您的令牌进行签名,但您会使用一些独特的用户特定负载,以便每个用户获得不同的令牌。

  3. 在一个简单的解决方案中,您只需在每次调用 API 时发送令牌(登录和注册除外)。还有其他建立会话的解决方案,但我认为它们实施起来有点困难。