Отделить собственный SPA-трафик от сторонних API-клиентов. - PullRequest
0 голосов
/ 08 октября 2019

Проблема проста: я хочу предоставить доступ к своему API третьим сторонам по своему усмотрению и иметь возможность различать 2 трафика.

Я хочу иметь возможность выставлять счета за использованиедля моих клиентов, но все еще есть мой собственный, без квоты использования. И я очень стараюсь реализовать это.

  • Я использую SPA, использующие JWT для аутентификации.
    Этот JWT выдается при входе пользователя в систему. через мою страницу входа в систему.

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

  • С другой стороны, я хочу выдатьплатить клиентам некоторые ключи API, которые позволят им использовать мой API для определенного количества запросов в месяц.

Моя проблема заключается в следующем: что если злонамеренный клиент просто воспроизведет мою последовательность входа в системув своем приложении и использует JWT, который я отправил ему для запроса API? Тогда у него не будет квоты, и он может потреблять столько, сколько захочет. Когда JWT истекает, он может просто снова войти в систему.

Я изучил эти идеи, но все они имеют недостатки:

  • различают заголовок Origin: злонамеренный клиент всегда может подделать его
  • имеет два разных домена (один «внутренний», который использует мой SPA, другой публично отображается в моем документе API): то же самое, любой, проверяющий мой SPA, узнает о внутреннем адресе API

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

Что такоерешения в этом случае?

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