2013-08-04 2 views
0

Я разрабатываю немного serveride api для использования с java-клиентом (который я тоже написал).Java-сервлет: разрешить только собственный клиент

Апи написано на майке (RESTful) и работает на сервере tomcat. Предоставляемые им данные передаются клиенту как Json-String, и вся связь выполняется через Http.

Теперь я хочу убедиться, что только моя собственная клиентская программа имеет доступ к api (на данный момент, как и его http, каждый может получать данные json через обычный браузер). Поэтому им нужно найти способ «идентифицировать» мою клиентскую программу для api с помощью ключа или чего-то подобного. Сначала я подумал об использовании пользовательского агента для идентификации, но это можно было легко скопировать. Поэтому мне нужен какой-то ключ, который изменяется динамически или что-то в этом роде.

Каков хороший способ сделать это?

Я искал в сети, но не нашел правильный ответ (может быть, неправильные ключевые слова?), Поэтому я счастлив за каждый намек и/или ссылку на эту тему.

Редактировать: Программа на стороне клиента - приложение для Android. Я хочу убедиться, что никто не создает подобное приложение и не использует мой сервер для своей цели.

+0

Вы не можете этого сделать. Любой может сделать свой браузер таким же, как ваш клиент, поскольку это код, запущенный на своем собственном компьютере. –

+0

Типичная формулировка «api key» используется Facebook и другими сайтами с возможностями приложения. Эти ключи обычно имеют значительную длину. Тем не менее, все, отправленное через http, будет видимым для «Интернета» и, следовательно, не будет иметь практической ценности безопасности. – abiessu

+0

@abiessu api ключи звучит интересно. Единственная проблема заключается в том, что, как вы упомянули, каждый может прочитать один из keays из пакета http и просто повторно использовать его. – danijoo

ответ

4

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

Хороший старт, это довольно несовместимо с двунаправленной аутентификацией SSL (сертификаты клиентов и серверов). Это поддерживается из коробки и требует небольших изменений кода.

Смежные вопросы