Включить ключ и соль для подписания JWT в NestJS - PullRequest
1 голос
/ 28 января 2020

У меня есть компонент, написанный на Phoenix-Framework (это эликсир под капотом),
, который я переписываю в Nest JS.

JWT используются в качестве средства аутентификации.
Есть часть, где после регистрации пользователя отправляется электронное письмо, содержащее ссылку для подтверждения.
Способ, которым Phoenix подписывает токен JWT, - используя метод sign .

Он имеет следующую подпись: sign(context, salt, data, opts \\ [])

Вот в чем дело: Контекст - это то, где Elixir находит базу секретных ключей , это можно рассматривать как симметричный ключ c для процесса подписания. Но вы также передаете другой «секрет», который является солью .

Теперь, в Nest JS, все, что я до сих пор нашел, - это jwt модуль служебных гнезд , в котором используется json -webtoken node module .

Здесь все, что вы можете сделать, это следующее: jwt.sign(payload, secretOrPrivateKey, [options, callback])

Под опциями нет опции "соль".

Мой главный вопрос: как мне добавить сюда соль?
Другие мои дополнительные вопросы:
1) Если я не использую basi c SHA-256, но HMA C -SHA или как он называется, мне вообще нужно? соль?
2) Метод sign из nestjs / jwt использует только 1 параметр:

jwtService.sign(payload: string | Object | Buffer, options?: SignOptions): string

Метод sign является реализацией jsonwebtoken .sign ().

Как мне вообще передать секретный ключ? Или это автоматически используется после того, как я настроил его в начале:

JwtModule.registerAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    secret: configService.getString('SECRET'),
  }),
  inject: [ConfigService],
}), 

1 Ответ

0 голосов
/ 14 февраля 2020

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

Секрет автоматически используется из конфигурации JwtModule с помощью функции sing ().

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