我正在使用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