Я решил запрыгнуть на подножку и начать использовать 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?