Я создаю веб-сервис, который должен быть доступен только для приложений iOS. В будущем я хочу перейти на мобильный сайт, чтобы сделать мой сервис также доступным для других мобильных операционных систем.
Теперь у меня все работает через API. мои пользователи могут регистрироваться, искать компании, заказывать товары у этих компаний и отслеживать их заказы. Он еще неактивен, но он работает.
Я столкнулся с одной серьезной проблемой: как это обеспечить?
В течение последних нескольких дней я прекратил кодирование, и я постоянно занимался поиском в Интернете, StackOverflow и информационной безопасности, как это сделать. Я обнаружил, что способ, которым Amazon обеспечивает их API, будет лучшим решением для меня. Способ, которым Amazon обеспечивает его обслуживание, объясняется здесь. Я немного изменил его для моего обслуживания:
- Пользователь регистрирует и получает закрытый ключ API + общедоступный ключ (идентификатор)
- Пользователь вводит учетные данные и указывает "войти". Приложение создает хэш из переменных + закрытый ключ. Приложение отправляет переменные + метку времени + хэш + открытый ключ в API
- API просматривает открытый ключ в базе данных, находит закрытый ключ, принадлежащий этому открытому ключу (если открытый ключ действителен). Затем API создает хеш так же, как и приложение. Если хеши одинаковы, выполняется запрос (вход в этот случай).
Этот способ обеспечения сервиса имеет смысл для меня, и я могу кодировать большую часть его. но у меня есть большая проблема, и я не могу найти для этого никакого решения:
- Пользователь получает общедоступный и закрытый ключ API при создании учетной записи. Открытый ключ может быть отправлен с сервера на пользовательское устройство, потому что это не обязательно секрет. Поскольку закрытый ключ API может быть отправлен никогда по кабелю, , как я могу убедиться, что учетная запись, зарегистрированная на пользовательском устройстве, знает закрытый ключ API, созданный на сервере
Кто-нибудь знает, как решить эту проблему? любая помощь будет высоко оценена!