У меня есть компонент, написанный на 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],
}),