Я разрабатываю веб-приложение с использованием Java EE и некоторых компонентов с открытым исходным кодом (Spring, Struts 2, jQuery и т. Д.). Некоторые из моих веб-страниц требуют аутентификации (Spring Security), а другие нет. Я пишу некоторые REST API (Restlet), и я использую их с моих страниц с помощью вызовов AJAX (jQuery). Я знаю, что другие веб-сайты не могут использовать мои API REST, если я не разрешаю CORS, и это то, что я хочу.Защищенные API REST от не-браузерного клиента
Однако любой клиент без браузера (завиток, приложения Java и т. Д.) Может вызывать мои API-интерфейсы REST: как я могу это запретить? Я не могу использовать аутентификацию для всех API REST, потому что я использую некоторые из них на веб-страницах, которые не требуют проверки подлинности. Я знаю, что некоторым API (например, Facebook SDK) требуется идентификатор приложения для включения вызовов, но каждый может украсть ключ из кода Javascript, включенного в мои веб-страницы.
Я хотел бы узнать с сервера, если HTTP-запрос был отправлен из браузера или других клиентских приложений, чтобы применить некоторую аутентификацию только во втором случае. Как я понимаю, любое клиентское приложение может устанавливать любой HTTP-заголовок, поэтому я не могу использовать HTTP-заголовки, не так ли? Я думаю, что моя проблема должна быть общей проблемой, поэтому, возможно, я что-то упустил.
Да, я беспокоюсь о DoS-атаках и других вредоносных программах. Я ищу простое решение, которое я могу применить ко всем моим API без головной боли. –