Разрешить вход в приложение Android только на утвержденных устройствах - PullRequest
0 голосов
/ 01 мая 2018

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

Мне известно, что Android предлагает решения для управления устройствами , которые позволяют создавать белые и черные списки приложений на управляемых устройствах. Но я не знаю о возможности занести в черный список аутентификацию приложения на устройствах, отличных от устройств, управляемых компанией. Наше приложение в настоящее время находится в Play Store, и текущие клиенты могут войти в систему с любого совместимого устройства Android с доступом к Play Store. Так что это должно быть ограничение, применяемое только к конкретным учетным записям пользователей.

1 Ответ

0 голосов
/ 01 мая 2018

Правильный способ реализовать это - использовать взаимную аутентификацию SSL.

https://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication

В этой схеме устройству будет предоставлен локальный сертификат клиента, тогда все [1] конечные точки сервера, используемые вашими приложениями, будут проверять этот сертификат. Это, конечно, требует клиентского кода для подготовки сетевых подключений для представления этого сертификата и конфигурации сервера для его проверки. Это безопасно, так же как и ваш личный закрытый ключ, который, вероятно, защищен каким-то HSM. Если устройство взломано, это просто: только это одно устройство и, конечно, вы можете занести это устройство в черный список с сервера на основе сертификата, который он предоставляет (см. CRL).

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

[1] Вы можете оставить открытыми определенные конечные точки, которые допускают ограниченную функциональность.

Это, вероятно, огромные инженерные усилия для вас и больше, чем ваши клиенты хотят потратить. Если они хотят принять замаскировку вместо реальной безопасности, вы можете попросить клиентов отправить в заголовке секрет (скажем, хэш серийного номера устройства + пароль или что-то в этом роде). Будет подготовительный этап, на котором вы зарегистрируете этот секрет на своем сервере и проверите его для каждого запроса. Помните, однако, что ничто не мешает вредоносному агенту сформулировать действительный запрос так же, как ваше приложение.

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