Мы создаем веб-приложение, которое обрабатывает приложения для объединения пользователей, и рассматривает несколько вариантов приложений приложений типа «клиент-сервер» и «СПА». Наше предпочтение от перспективы использования пользователей, вероятно, является полностью клиентским SPA, но у меня есть проблемы безопасности API.Использование учетных данных клиента «OAuth» в приложении на базе браузера
Поскольку мы не являемся пользователями аутентификации (они еще не являются пользователями), стандарт OAuth подразумевает, что нам нужно будет использовать тип гранта «учетные данные клиента». Это не проблема, если сервер справляется с этим, но в SPA сами учетные данные сидят в браузере для всех, кто видит, и наш API-шлюз не может отличить законный вызов API от нашего SPA в браузере от сценария. написал с собранными подробностями.
приложение на стороне сервера может скрывать учетные данные клиента и, по крайней мере, проверять, что: а) вызовы API требуют активного сеанса (с использованием файлов cookie), и b) мы можем ограничить количество определенных вызовов API только одним сессия. Сервер может вызвать наш шлюз API со своими собственными учетными данными, выполнив несколько проверок.
С другой стороны, с помощью Одиночная страница, работающая в браузере, о единственных элементах управления, которые я могу думать о том, чтобы ограничить скорость вызовов API в шлюзе API, но я подозреваю, что этого будет очень мало.
Случайная мысль: Одна из моих идей заключалась в том, чтобы использовать «неявный» тип предоставления OAuth, как если бы это был процесс аутентификации пользователя. Когда мы перенаправляемся на страницу входа в систему, она фактически не требует взаимодействия с пользователем и вместо этого захватывает отпечаток пальца устройства (например, IP-адрес, браузер, язык, разрешение экрана), а затем перенаправляет обратно как «успешный» вход. Тогда у клиента есть уникальный токен доступа, и мы отслеживали несколько деталей о конечном пользователе для целей аудита и потенциально оценивали риск. Это требует настройки нашего Auth Server - безусловно, возможно, но не обязательно идеально.
Есть ли другие подходы, которые люди предпринимают для защиты вызовов API в веб-приложениях SPA, которые являются успешными и безопасными? Или я придерживаюсь маршрутизации вызовов API через сервер приложений, который применяет элементы управления на основе браузера?
Цените любые мысли или идеи ...