Как запретить аутентифицированному пользователю подделывать спокойные вызовы API - PullRequest
3 голосов
/ 06 марта 2019

Так что я строю успокоительный API. У него есть конечная точка / account / {id} для возврата пользовательских данных. API защищен через сервер идентификации, который выдает запрашивающей стороне веб-токен JSON (JWT) с доступом к конечной точке / account / {id}. Таким образом, пользователь отправляет запрос с именем пользователя и паролем и получает JWT в ответ на успешную аутентификацию. Теперь пользователь отправляет запрос на информацию о своей учетной записи в / account / {id}. Запрос отправляется с токеном в заголовке и возвращает ответ 200 с данными пользователя в полезной нагрузке.

Как можно было бы авторизовать {id} в конечной точке? Другими словами, аутентифицированный пользователь может просто добавить любой {id} в конечную точку и потенциально получить данные другого пользователя. Как это предотвратить с помощью JWT?

1 Ответ

1 голос
/ 06 марта 2019

Вы можете хранить данные в веб-токене. Если вы сохраняете идентификатор пользователя, вы можете идентифицировать его для каждого запроса, который он делает. Это безопасно, потому что содержимое токена подписано закрытым ключом сервера. Поэтому их содержание не может быть изменено.

После этого вы можете либо ограничить API, чтобы каждый пользователь мог запрашивать только свою собственную запись, либо вы также можете реализовать сложную систему ролей, где у каждого пользователя есть набор ролей (например, read-only, guest, maintainer, admin, client и т. Д.), Которые определяют, какие конечные точки и как они могут использовать.

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