NKeys

NKeys

NKeys — это новая высоконадежная система подписи с открытым ключом, основанная на

.
С помощью NKeys сервер может проверять личность, не сохраняя и не видя приватных ключей. Система аутентификации работает, требуя от подключающегося клиента предоставления своего открытого ключа и цифровой подписи запроса с помощью своего закрытого ключа. Сервер генерирует случайный вызов с каждым запросом на подключение, что делает его невосприимчивым к атакам воспроизведения. Сгенерированная подпись проверяется на соответствие предоставленному открытому ключу, тем самым подтверждая личность клиента. Если открытый ключ известен серверу, аутентификация проходит успешно.
NKey — отличная замена аутентификации с помощью токена, поскольку подключающийся клиент должен будет доказать, что он контролирует закрытый ключ для авторизованного открытого ключа.

Чтобы сгенерировать nkeys, вам понадобится

.
Генерация NKeys и настройка сервера
Чтобы сгенерировать пользовательский NKEY:
nk -gen пользователь -pubout
SUACSSL3UAHUDXKFSNVUZRF5UHPMWZ6BFDTJ7M6USDXIEDNPPQYYYCU3VY
UDXU4RCSJNZOIQHZNWXHXORDPRTGNJAHAHFRGZNEEJCPQTT2M7NLCNF4
Первая строка вывода начинается с буквы Sдля семян . Второе письмо, Uозначает Пользователь . Семена — это закрытые ключи; вы должны относиться к ним как к секретам и бережно охранять их.
Вторая строка начинается с буквы Uдля пользователя и является открытым ключом, которым можно безопасно поделиться.
Чтобы использовать аутентификацию nkey, добавьте пользователя и установите nkeyк открытому ключу пользователя, которого вы хотите аутентифицировать:
авторизация: {
пользователи: [
{ ключ: UDXU4RCSJNZOIQHZNWXHXORDPRTGNJAHAHFRGZNEEJCPQTT2M7NLCNF4}
]
}
Обратите внимание, что раздел пользователя устанавливает nkeyсвойство (свойства пользователя/пароля/токена не нужны). Добавлять permissionразделы по мере необходимости.
Конфигурация клиента

Теперь, когда у вас есть пользовательский ключ nkey, давайте настроим

для использования его для аутентификации. В качестве примера, вот параметры подключения для клиента узла:
const NATS = требуется ( 'nats' );
const nkeys = требуют ( 'ts-nkeys' );
const nkey_seed = ' SUACSSL3UAHUDXKFSNVUZRF5UHPMWZ6BFDTJ7M6USDXIEDNPPQYYYCU3VY ' ;
const nc = НАТС . подключить ({
порт : ПОРТ ,
nkey : 'UDXU4RCSJNZOIQHZNWXHXORDPRTGNJAHAHFRGZNEEJCPQTT2M7NLCNF4' ,
sigCB : функция ( одноразовый ) {
// клиент безопасно загружает seed из файла
// или какая-то константа, например `nkey_seed`, определенная в
// программа
nkeys ск = константа . fromSeed ( Buffer.from nkey_seed ( ) ) ;
вернуть ск . знак ( одноразовый номер );
}
});
...
Клиент предоставляет функцию, которую он использует для анализа начального числа (закрытого ключа) и подписи запроса на подключение.

 

Добавить комментарий

Обратная связь

Интересуют вопросы реализации алгоритмов, программирования, выбора электроники и прочая информация, постараюсь осветить в отдельных статьях

пишите мне на netdm@mail.ru