Angular и Json Web Tokens - PullRequest
       44

Angular и Json Web Tokens

1 голос
/ 10 мая 2019

У меня есть проект API ядра .net 2.2, который используется угловым приложением.Для защиты API я использую JWT.И API, и SPA находятся в домашних приложениях.

Я использую IdentityServer4 с типом предоставления пароля владельца ресурса.Я слышал, что это не рекомендуется, но каждому пользователю назначены разные роли, которые должны быть помещены в утверждение о ролях JWT.Это позволяет аннотации данных авторизации ядер .net предоставлять и ограничивать доступ к каждому маршруту.

Поток, который я сейчас имею, заключается в том, что пользователь входит в SPA, который отправляет учетные данные в API.API использует Identity для проверки учетных данных.При успешной проверке API отправляет запрос IdentityServer4 для получения JWT, который он затем отправляет обратно в SPA.Затем JWT сохраняется в локальном хранилище для использования при каждом запросе.

Мне интересно, должен ли я запрашивать токен непосредственно у IdentityServer4 (IS4 будет иметь доступ к контексту Identity и проверять un / pw) изспа?Также есть какие-то другие серьезные недостатки в потоке, которые я пропускаю.

Ответы [ 3 ]

0 голосов
/ 13 мая 2019

Вам лучше использовать Неявный поток с Angular. Для предоставления пароля владельцу ресурса необходимо, чтобы ваше приложение считывало имя пользователя и пароль, из-за которых возникают проблемы с безопасностью, из-за которых пароли могут подвергаться злоумышленникам.

Для реализации с использованием Implicit, вы можете обратиться к этой статье .

Кроме того, вы также можете использовать код авторизации с PKCE Flow:

Для приложений на основе JavaScript, Implicit больше не рекомендуется. Вместо этого используйте код авторизации с PKCE.

0 голосов
/ 13 мая 2019

Изначально я начал с токена JWT, но из-за некоторых сложностей позже решил использовать собственный токен. Для более подробного объяснения, пожалуйста, прочитайте пользовательский токен

Следующая диаграмма демонстрирует поток обработки запросов, который я реализовал: enter image description here

0 голосов
/ 12 мая 2019

Ваш вопрос

Мне интересно, должен ли я запрашивать токен непосредственно у IdentityServer4 (IS4 будет иметь доступ к контексту Identity и подтвердите un / pw) из SPA

Да. Вы можете сделать запрос непосредственно в своем SPA, потому что это обычная практика. Таким образом, вы должны правильно установить токен, и все, что связано с IS, вернется к вам в хранилище сеансов, и когда вы запрашиваете API, вам нужно будет отправить свой токен для аутентификации в API

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