Проблема проста: я хочу предоставить доступ к своему API третьим сторонам по своему усмотрению и иметь возможность различать 2 трафика.
Я хочу иметь возможность выставлять счета за использованиедля моих клиентов, но все еще есть мой собственный, без квоты использования. И я очень стараюсь реализовать это.
Я использую SPA, использующие JWT для аутентификации.
Этот JWT выдается при входе пользователя в систему. через мою страницу входа в систему.
Я хочу, чтобы люди, пришедшие с этим JWT, имели доступ к API без каких-либо квот или ограничений.
С другой стороны, я хочу выдатьплатить клиентам некоторые ключи API, которые позволят им использовать мой API для определенного количества запросов в месяц.
Моя проблема заключается в следующем: что если злонамеренный клиент просто воспроизведет мою последовательность входа в системув своем приложении и использует JWT, который я отправил ему для запроса API? Тогда у него не будет квоты, и он может потреблять столько, сколько захочет. Когда JWT истекает, он может просто снова войти в систему.
Я изучил эти идеи, но все они имеют недостатки:
- различают заголовок Origin: злонамеренный клиент всегда может подделать его
- имеет два разных домена (один «внутренний», который использует мой SPA, другой публично отображается в моем документе API): то же самое, любой, проверяющий мой SPA, узнает о внутреннем адресе API
У меня заканчиваются идеи, и я думаю, что это неразрешимая проблема: любая общедоступная информация, которая понадобится моему SPA, всегда будет в браузере клиента, поэтому может быть подделана вредоносным клиентом.
Что такоерешения в этом случае?