Я работаю над REST-сервисом, который имеет несколько требований:
- Должно быть безопасно.
- Пользователи не должны иметь возможность подделывать запросы.
Мое текущее предлагаемое решение состоит в том, чтобы иметь настраиваемый заголовок авторизации, который выглядит следующим образом (так же, как работают веб-сервисы amazon):
Authorization: MYAPI username:signature
У меня вопрос, как сформировать подпись. Когда пользователь входит в службу, ему выдается секретный ключ, который он должен использовать для подписи запросов. Это остановит других пользователей, отправляющих запросы от своего имени, но не остановит подделку запросов.
Приложение, которое будет использовать этот сервис, является приложением для iPhone, поэтому я подумал, что в приложение может быть встроен открытый ключ, с которым мы можем сделать дополнительную подпись, но означает ли это, что у нас будет два подписи, одна для ключа пользователя и одна для ключа приложения?
Буду очень признателен за любой совет, я бы очень хотел сделать это правильно с первого раза.