Проверка подлинности на основе токенов в spa (React) - PullRequest
0 голосов
/ 16 сентября 2018

Как я понял, токен обновления не поддерживается в spa (реагирует).Потому что это не может защитить его.

Итак, мне пришла серия вопросов:

1 - Можем ли мы использовать токен для длительного доступа в спа?Это безопасно?

2 - Есть ли альтернативное решение для обновления токена?

3 - Должны ли мы использовать сторонний сервер идентификации, такой как identityserver4 или мы можем реализовать поколение токенов сами).Что такое лучшая практика?

1 Ответ

0 голосов
/ 25 ноября 2018

Немного поздно, но все же ...

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

1 - Можем ли мы использовать токен для длительного доступа в спа? Это безопасно?

Мы можем, но будет ли это безопасно, будет зависеть от политики безопасности вашего приложения. Короче говоря, здесь - это пример того, как можно считать срок службы токена доступа указанным для различных требований безопасности.

2 - Является ли альтернативное решение для обновления токена?

Да, это называется Тихая аутентификация и вкратце это выглядит так:

  • клиент (приложение SPA) получает токен доступа, а expires_in параметр
  • Identity Server предоставляет сеанс аутентификации (cookie), поэтому приложение может запросить новый токен без предоставления учетных данных, поскольку он уже аутентифицирован на Identity Server
  • в случае истечения времени скольжения клиент отправляет запрос на Identity Server, чтобы поддерживать сеанс в течение необходимого времени
  • как только срок действия маркера доступа истекает, а сеанс аутентификации активен (может потребоваться проверка), клиент запрашивает другой токен доступа (обычно это делается в setTimeout), но в этом случае предоставляет параметр для Identity Server, что экран согласия должен быть удален (обычно это prompt=none)

Ресурсы:

Автоматическая аутентификация Azure AD

Auth0 Тихая аутентификация

3 - должны ли мы использовать сторонний сервер идентификации, такой как identityserver 4, или мы можем реализовать генерацию токенов сами). Что лучше практика?

Это будет зависеть от размера вашего приложения и от того, требуется ли вам просто создание токена или что-то еще (например, федеративная аутентификация «из коробки», различные типы грантов и т. Д.). Для крупных предприятий (если нет необходимости заново изобретать колесо) всегда рекомендуется использовать готовую к работе стороннюю библиотеку ( Identity Server 4 или OpenIddict ), если только у вас нет небольшое приложение (MVP, прототип и т. д.).

Identity Server 4 требует определенных усилий для правильной настройки и может быть просто чрезмерным. OpenIddict - немного более простая альтернатива.

Создание пользовательских токенов - это то, что мы делали до появления Identity Server. Сегодня это только вопрос быстрого решения ваших пользовательских задач аутентификации.

Стоит упомянуть этот проект JWTSimpleServer для простой аутентификации JWT.

...