Безопасность JWT в OAuth 2.0 и OpenID Connect - PullRequest
0 голосов
/ 23 июня 2019

Я решил запрыгнуть на подножку и начать использовать OAuth 2.0 и OpenID Connect для аутентификации и авторизации моего следующего проекта, но я изо всех сил пытаюсь понять, как JWT может быть безопасным.

Я использую Angular 8 для внешнего интерфейса с бэкэндом node.js и Auth0 в качестве поставщика услуг идентификации (неверная терминология, я знаю. Забыли).

Я смотрел два или три курса PluralSight по этим предметам, но ни один из них не прошел через использование JWT на бэкэнд-узле node.js, в основном они концентрируются на стеке .NET, который, как мне кажется, отнимает у него много труда. .

Моя проблема заключается в следующем: как я могу быть уверен, что токен JWT, отправленный моему API, получен из Auth0? Я понимаю, что у токена есть подпись, и я полагаю, что у Auth0 есть какой-то личный секрет, который они используют для подписи JWT, но что мешает некоторому злонамеренному объекту создать JWT с точно таким же контентом и подписать его с другим секретом и отправить его мой API? В примерах .NET, которые я видел, я не вижу упоминания о проверке того, что секрет подписи соответствует Auth0. Какие проверки необходимы для API - .NET, node.js или иным образом - чтобы убедиться в подлинности JWT?

И как это будет работать с nodejs?

1 Ответ

2 голосов
/ 23 июня 2019

Я не уверен, правильно ли я вас понял или как, но JWT подписан и проверен одним и тем же секретом (если используется алгоритм HMAC), поэтому ответ на ваш первый вопрос будет:

  • если он подделан, вы будете уведомлены во время проверки, потому что подпись с другим секретом - это то, что выдает его, что токен скомпрометирован.

Не уверенкакие библиотеки вы используете, но для Node.js пакет jsonwebtoken имеет функцию jwt.verify (token, secret) , которая принимает ваш токен и секретные значения в качестве аргументов.Это в основном все, что вам нужно и может иметь для проверки.

...