Nodejs - кодировать в base64 с «закрытым ключом» и иметь возможность декодировать только на сервере - PullRequest
0 голосов
/ 08 сентября 2018

Мой пример использования следующий:

  1. Входящий http-запрос на сервер для входа
  2. Сгенерирован токен пользователя. Токен представляет собой объект Json, созданный из различных областей. Затем конвертируйте в String и Base64.

    const stringObject = {
      elementA: stringA,
      elementB: stringB
    };
    
    const bufferString = new Buffer(`${JSON.stringify(stringObject)}`);
    const encodedAccessToken = bufferString.toString('base64');
    

Сгенерированная строка теперь может быть декодирована где угодно. Есть ли способ, которым я могу закодировать его таким образом, чтобы только мой сервер смог его декодировать? Как кодирование с помощью какого-то ключа.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

используйте взамен jsonwebtoken. он может зашифровать ваш объект с помощью секретной фразы. Библиотека типа node-jsonwebtoken очень проста в использовании.

0 голосов
/ 08 сентября 2018

Вы можете использовать модуль узла токена JWT: ссылка

Кодирование данных и генерация токена :

var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');

{foo: 'bar'} - это ваши поля, которые вы шифруете

Декодировать тем же ключом shhhhh

// verify a token symmetric
jwt.verify(token, 'shhhhh', function(err, decoded) {
  console.log(decoded.foo) // bar
});
0 голосов
/ 08 сентября 2018

Это не дает прямого ответа на ваш вопрос, но я думаю, что ваш общий подход неверен. То, что вы пытаетесь достичь, это иметь данные сеанса. Вам не нужно отправлять эти данные клиенту и обратно. Это не очень хорошая практика. Вместо этого вам следует хранить эти данные на сервере, предпочтительно в базе данных.

Что бы вы сделали, это создать уникальный ключ, который генерируется случайным образом. Вы сохраняете пользовательские данные, используя этот ключ, и отправляете ключ клиенту для использования в запросах. Вы делаете это, устанавливая его как переменную cookie.

Пользовательские данные могут иметь дополнительные поля переменных для более безопасного доступа. Как IP-адрес клиента и, возможно, время истечения для очистки.

...