Должен ли я использовать промежуточное ПО или средства защиты для аутентификации с помощью Auth0 и nest js? - PullRequest
0 голосов
/ 29 апреля 2020

Я нахожусь в загадке.

Я начал создавать старый добрый сервер TEST API REST, используя Nest JS. Затем я добавил к нему Auth0, используя эту статью, в которой вы используете AuthGuard:

https://auth0.com/blog/developing-a-secure-api-with-nestjs-adding-authorization/

Однако мне так и не удалось заставить все работать правильно, всегда получаю ошибку 401 Unauthorized. Это расстраивало.

Тогда я нашел эту статью:

https://auth0.com/blog/full-stack-typescript-apps-part-1-developing-backend-apis-with-nestjs/

, которая заставила меня создать промежуточное программное обеспечение для аутентификации с Auth0 и JWT. И вот, это сработало.

Но это не так - я чувствую, что должен быть в состоянии выполнить всю процедуру авторизации с @UseGuards и AuthGuard и всем этим совершенством Nest JS.

Так Я предполагаю, что мой вопрос двоякий: я ошибаюсь, если не решаюсь использовать промежуточное программное обеспечение вместо декоратора Nest JS? и есть ли у кого-нибудь работающий простой пример использования декоратора в Nest JS?

1 Ответ

1 голос
/ 29 апреля 2020

Это немного основано на мнениях, однако, большая часть этого находится в документах и ​​рекомендуется хорошей практикой, поэтому я постараюсь ответить.

Я настоятельно рекомендую перейти с @Guard , Nest JS использует декораторы практически для всего. Это точно, но как-то основано на Spring, который используется во всем мире. Декораторы делают код довольно многословным, поскольку вы можете ясно видеть, что применимо к классу или конкретному методу.

У меня никогда не было проблем, например с JWT Guards in Nest JS.

Взгляните сюда: https://docs.nestjs.com/techniques/authentication#implementing -passport-jwt

Для меня это работает как шарм.

В любом случае - вы также можете попробовать использовать ваш собственный Guard для JWT, например, https://github.com/auth0/node-jwks-rsa. Должно быть легче отлаживать, чем наверняка, однако встроенная защита JWT, насколько я помню, дает хорошие журналы.

Я бы предложил использовать Middleware для вещей, которые взаимодействуют с КАЖДЫМ И КАЖДЫМ ответом или запросом и охранники для всех аутентичных вещей.

...