Аутентификация на основе токенов: ограничение маршрутов для определенных пользователей - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть экспресс-бэкэнд, который реализует аутентификацию JSON Web Token.После того, как пользователь предоставил правильное имя пользователя и пароль, токен генерируется с использованием секрета.

Теперь предположим, что этот пользователь хочет удалить свой проект, для этого в программы / / programId отправляется запрос DELETE.,Сервер API использует промежуточное ПО JWT для проверки правильности токена, затем база данных обновляется.

В основном мой вопрос: как я могу убедиться, что пользователь, который делает запрос, является владельцем проекта??Если я могу просто отправить запрос на правильный маршрут с любым действительным токеном и действительным телом, что помешает любому пользователю отправлять вредоносные запросы и удалять / редактировать / получать доступ к данным другого пользователя?

Это как-то связано с полезной нагрузкой JWT?

Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

Есть несколько способов справиться с этим, и точное решение, которое вы выберете, будет зависеть от вашей архитектуры, от того, используете ли вы шлюз API и т. Д.

Один из подходов, запрещающий пользователюудаление чужого проекта будет означать изменение API удаления, так что для него также потребуется идентификатор пользователя в качестве одного из входных параметров.Предполагая, что вы внесли только это изменение, ваш рабочий процесс будет выглядеть примерно так:

  • пользователь отправляет запрос на сервер с сервером JWT
  • , который пытается отменить подпись / открыть JWT
  • в случае успеха сервер затем проверяет заявки (например, срок действия), чтобы убедиться, что токен действителен, и затем извлекает имя пользователя
  • , после чего сервер маршрутизирует входящий programId из запроса,вместе с идентификатором пользователя от JWT до конечной точки удаления
  • содержимое удаляется

Ключевым моментом выше является то, что сервер не принимаетидентификатор пользователя снаружи.Скорее, пользователь должен доказать, что у него есть действительный JWT, из которого может быть извлечен его идентификатор пользователя.

...