Сколько пар открытых / закрытых ключей требуется на сервере и лучший способ создать их в Express.js? - PullRequest
0 голосов
/ 19 октября 2019

Я только начинаю исследовать тему ассиметричного шифрования и пар открытого и закрытого ключей и т. Д., И у меня кружится голова, поэтому заранее извиняюсь, если приведенные ниже вопросы являются очень простыми.

Для справки: я следую вместе с отличным учебником https://blog.angular -university.io / angular-jwt-authentication / по шифрованию и настройке JWT's. Пример кода в значительной степени относится к сторонней аутентификации, но прежде чем я попробую это, я хотел бы сначала попытаться обработать аутентификацию на моем собственном бэкэнде Express. Поэтому мои вопросы ниже относятся исключительно к аутентификации в моем собственном бэкэнде Express.

Насколько я понимаю, процесс аутентификации заключается в том, что мы подписываем JWT на бэкэнде, используя RSA_PRIVATE_KEY, передаваяJWT для внешнего интерфейса в качестве ответа json на POST аутентификации, а затем для последующих запросов сервер проверяет входящий JWT, используя RSA_PUBLIC_KEY. Имея это в виду, у меня есть три вопроса, как показано ниже:

  1. Первое, что мне не ясно, касается того, сколько пар ключей необходимо. Например, предположим, что в нашем приложении много тысяч пользователей, каждый из которых имеет несколько сеансов в день. Мое предварительное понимание состоит в том, что серверу нужна ОДНА пара закрытых / открытых ключей, чтобы подписать и проверить все JWTs - для всех пользовательских сессий за незапамятные времена - но я хотел бы убедиться, что мое понимание верно, иесли нет, нужна ли отдельная пара открытого / закрытого ключа для пользователя? или даже за сеанс?

  2. Независимо от того, сколько пар ключей необходимо, каков наилучший способ (или некоторые варианты) сделать это в Express? Когда я выполняю поиск в Интернете, я не вижу ничего конкретного, связанного с Express. Я вижу ряд решений CLI, таких как openssl, и вижу несколько пакетов для Node.js, таких как crypto (но большинство сообщений для них довольно старые). Вот более свежая публикация: Как генерировать пары открытых / закрытых ключей с использованием openssl в nodejs? , но это решение все еще использует командную строку для генерации пар ключей. Я поднимаю этот вопрос, потому что я предполагаю, что пары ключей должны периодически вращаться, и я думаю, что не имеет смысла периодически вручную генерировать пары в командной строке, поэтому не имеет смыслаавтоматизировать генерацию пары ключей в самом бэкэнде?

  3. Последний бонусный вопрос: так как ключи PRIVATE и PUBLIC остаются на сервере все время в развертывании аутентификации, которое я обрисовал выше, справедливо будет сказать, что PUBLICключ действительно не "ОБЩЕСТВЕННЫЙ" в этом случае? (или я что-то неправильно понимаю?).

Заранее большое спасибо за то, что пролили свет на эти проблемы и помогли новичку быстро освоить эту тему !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...