2016-10-21 3 views
0

У меня есть требование защитить мои ресурсы JAX-RS и принимать заявки только от авторизованных мобильных приложений. Это возможно? Как это может быть сделано?Ограничение трафика на сервер только из моего мобильного приложения

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

Идея, которую я придумал, - использовать токены JWT, подписанные с общим секретом. Затем я мог бы добавить на сервер фильтр авторизации, чтобы проверить подпись. Если он не проверяет, отмените запрос. Это похоже на жизнеспособный вариант?

Я беспокоюсь о безопасности общего секретного устройства на мобильном устройстве, может ли он быть скомпрометирован с помощью внедренного устройства?

+0

Это аналогичный вопрос с некоторыми идеями: http://stackoverflow.com/q/28609526/2889165 –

ответ

1

Использование маркеров является предпочтительным способом. Но секретный ключ не разделяется. Доступ к нему имеет только сервер. Этот секретный ключ используется для генерации кода аутентификации сообщения (MAC) JWT. Поскольку секретный ключ известен только серверу, никто другой не может генерировать JWT с действительной подписью. Секрет может быть сохранен или применен.

  • После того как клиент аутентифицирован с использованием учетных данных, сервер должен отправить подписанный JWT клиенту.
  • Этот JWT должен содержать необходимую информацию для идентификации клиента и состояния (при необходимости).
  • Затем клиент отправляет этот токен в поле заголовка вместе со всеми другими запросами.
  • Сервер проверяет JWT с помощью секретного ключа и обрабатывает запрос.

Даже если клиент может изменить корпус JWT, он не может проверить его. В этом весь смысл использования подписи.

+0

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

+0

Для решения такого сценария вам, возможно, придется использовать стороннюю службу. Вот высокий уровень [обзор] (http://android-developers.blogspot.co.il/2013/01/verifying-back-end-calls-from-android.html). – TMtech

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