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
Добавить комментарий