Я использую jwt-simple для создания ключа api. В основном, это encode(secret+data)
и отправляет его с просьбой. Я знаю, что сервер будет decode(encode(secret+data))
и убедитесь, что он является действительным запросом. Пример кода найден в jwt-simple
documentation:Проверка подлинности API с помощью json web tokens 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)
? Поэтому я должен использовать HTTPS через HTTP? - Думаю, мне нужно хранить секрет каждого пользователя на сервере, так как он понадобится для декодирования. Где я должен хранить его, если я не прав?
- Как отправить несколько запросов API? Есть ли лучший способ, кроме отправки ключа API для каждого запроса?
Заранее спасибо.
Вы не должны посылать ключ никому. Вы отправляете только сгенерированный токен (из которого вы не можете угадать ключ), и вы возвращаете этот токен. Затем вы используете свой ключ, чтобы убедиться, что этот токен был сгенерирован вами с помощью этого ключа и не был изменен. Также вам нужен один ключ для каждого эмитента, а не для пользователя. – masimplo