вот задача:
Уровень сервиса/бизнес имеет интерфейс REST (JSON). Существует два типа клиентов, которые могут вызывать API: Webapp, который работает в браузере и мобильном приложении (Android). Оба они являются публичными. Каждый, кто пользуется авторизированным (!) Webapp или уполномоченным (!) Мобильным приложением, должен иметь доступ к ресурсам. Все неавторизованные клиенты (например, скрипты) должны быть запрещены.
Примечание. Нет ограничений, сколько или каких пользователей имеют доступ к сертификату уровня сервиса → сертификаты открытого ключа клиента, вероятно, не могут быть использованы. Только авторизованное программное обеспечение клиента должно быть авторизовано.
По-моему, единственное решение - "по неизвестности".
Идеи:
- Загрузите случайную JS-функцию (позвоните ей "вызов" ) с сервера, который выполняется в браузере (или приложении), отпечатки пальца браузера определенным образом (ошибки браузера?), вычисляет результат и отправьте результат с каждым вызовом REST-API.
Есть ли у вас какие-либо дальнейшие идеи или предложения?
Спасибо заранее и извините за мой плохой английский
Изменить:
Мой вопрос не имеет ничего общего с аутентификацией и/или авторизацией пользователя, но клиентское программное обеспечение аутентификация + авторизация.
Фон моего вопроса заключается в том, что для моих собственных приложений (android + web) есть RESTful-back-end, и я не хочу, чтобы кто-то создал собственное клиентское программное обеспечение поверх него. Причина этого заключается в том, что это коммерческий веб-сайт/приложение, которое предоставляет некоторые данные, которые были довольно дорогостоящими для сбора. Я хотел бы продвигать сайт и мобильное приложение, а не RESTapi (или какой-либо сторонний конкурент).