Вы должны использовать OAuth.
На самом деле существует две спецификации OAuth: 3-сторонняя версия и 2-сторонняя версия. Большая часть внимания привлекает трехногая версия, и , а не та, которую вы хотите использовать.
Хорошей новостью является то, что 2-сторонняя версия делает именно то, что вам нужно, она позволяет приложению предоставлять доступ к другому через общий секретный ключ (очень похоже на модель веб-службы Amazon, вы будете использовать HMAC-SHA1). метод подписи) или через систему открытого / секретного ключей (используйте метод подписи: RSA-SHA1). Плохая новость заключается в том, что она еще не так хорошо поддерживается, как 3-сторонняя версия, поэтому вам, возможно, придется выполнить немного больше работы, чем в противном случае сейчас.
По сути, двухсторонний OAuth просто указывает способ «подписать» (вычислить хэш) несколько полей, которые включают текущую дату, случайное число, называемое «nonce», и параметры вашего запроса. Это очень затрудняет олицетворение запросов к вашему веб-сервису.
OAuth медленно, но верно становится общепринятым стандартом для подобных вещей - в конечном итоге вам будет лучше, если вы примете его, потому что тогда люди смогут использовать различные библиотеки, доступные для этого.
Это сложнее, чем вы хотели бы поначалу задуматься, но хорошая новость заключается в том, что многие люди потратили на это много времени, поэтому вы знаете, что ничего не забыли. Отличным примером является то, что совсем недавно Twitter обнаружил пробел в безопасности OAuth, над которым в настоящее время работает сообщество. Если вы изобрели свою собственную систему, вам придется самому разбираться со всем этим.
Удачи!
Chris