我正在使用jwt-simple来创建api密钥。基本上它的作用是encode(secret+data)
并发送附加请求。我知道服务器将decode(encode(secret+data))
并验证它是一个有效的请求。 示例代码jwt-simple
documentation发现:使用json web令牌进行API认证jwt-simple
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' }
我的问题是:
- 会不会有人能够访问的API,如果他们知道通过
encode(data+key)
生成的令牌?这就是为什么我应该通过HTTP使用HTTPS? - 我想我需要将每个用户的秘密存储在服务器上,因为它需要解码。如果我不正确,我应该在哪里存储它?
- 我将如何发送多个API请求?除了为每个请求发送API密钥之外,还有更好的方法吗?
在此先感谢。
你不应该把密钥发送给任何人。您只发送生成的令牌(从中无法猜测密钥),并将该令牌返回。然后您使用密钥来验证此令牌是由您使用此密钥生成的,并未被篡改。您还需要每个发行者一个密钥,而不是每个用户。 – masimplo