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