Как аутентифицировать собственное приложение на веб-сервисе?
Мне нужно найти решение, чтобы убедиться, что мое приложение, которое будет распространяться как мобильное приложение на мобильных устройствах, и ТОЛЬКО мое приложение может получить доступ к моей веб-службе, размещенной в другом месте. Другими словами, мой веб-сервис должен принимать запрос только через законное использование моего приложения, но не с помощью каких-либо других средств.
Решение, о котором я подумал, заключается в следующем, пожалуйста, скажите мне, если вы думаете, что есть лучшее или это не подходит:
Контрсинхронизированные одноразовые пароли (CS-OTP). Основная идея состоит в том, что каждая сторона (WS и приложение) содержит жестко закодированный секретный ключ и синхронизированный счетчик. Каждый раз, когда клиентское приложение отправляет запрос в WS, оно создает хэш с секретным ключом и значением счетчика. Внутренний WS делает то же самое и сравнивает хэши, если они идентичны, аутентификация проходит успешно, и обе стороны увеличивают свои счетчики, чтобы синхронизировать их. Поскольку счетчик увеличивается после каждой успешной попытки, хэш будет каждый раз отличаться (таким образом, имя "Одноразовый пароль").
Почему я думаю, что мне нужен одноразовый пароль? Поскольку, если пароль или хеш остается неизменным, он может быть очень легко перехвачен пользователем клиентского приложения, которое затем может подделать запрос самостоятельно без необходимости приложения.
Скажите мне, что вы думаете об этом решении.
2 ответа
Множество способов добиться этого, мой метод заключается в создании зашифрованного токена от клиента к серверу с использованием секретного ключа, как вы предлагаете. Я также включил бы в этот зашифрованный ключ некоторую информацию, которая поможет проверке. Включите такие вещи, как IP-адрес, дату / время истечения срока, текущее время и т. Д. Таким образом, кто-то, пытающийся воспроизвести трафик, должен прийти с одного и того же IP-адреса, в течение определенного периода времени и т. Д. Вы можете варьировать в соответствии со своими потребностями. Надеюсь это поможет.
Я верю, что пока нативное приложение находится под контролем хакера, он может отлаживать ваше приложение и хранить ваш секрет. Неважно, в чем секрет. Если вы даете секрет, вы даете его человеку, а не заявке.
Вы можете дать уникальный секрет каждому экземпляру приложения, тогда у вас может заблокироваться sb. который ведет себя странно. Это дает вам вид аутентификации.
Вы можете попытаться изменить код, чтобы сделать хакерство сложнее, но это всего лишь дополнительные расходы для хакера. Однако "только" может быть достаточно.