Вот уже который день разбираюсь в протоколе OAuth и никак в моей голове не уложится один момент:
Предположим, есть у меня некий сервис с REST API и OAuth-сервер. Я создаю десктоп (или мобильное) приложение, регистрирую его на OAuth-сервере и получаю сгенерированные им app_id и app_secret, которые впоследствии использую для получения токена. Предположим, мое приложение будет раз в минуту отсылать лог работы на сервис (методом POST), и работать оно должно 24/7 без вмешательства человека, а значит токен мне нужен бессрочный. Далее значит получаю я токен и начинаю работать с сервисом. При этом, как я понимаю, и app_id и app_secret и токен должны где-то хранится. В случае десктоп приложения это, например, конфигурационный файл или реестр Windows. Соответственно, эти данные можно скомуниздить и использовать в нехороших целях, например, тупо заDDoSить мой сервис каким нибудь сторонним приложением.
Нет, каждый запрос шифруеться нашим secret, secret никуда не передаеться. Токен в oauth на самом деле присутствует толкьо в 3-legged режиме. Это идентификатор пользователя (третего лица). И он зашифрован. Украсть его не получиться. Надо украть secret и знать алгоритм шифрования, что бы расшифровать его. Если у вас система расчитана только на 2 участника, то разумнее использовать 2-legged.
Ну это нужно реализовать, или взять готовое решение. Я когда реализовывал на PHP брал готовую либу, для сервера и клиента. Клиент есть и в Zend_Framework, пожно почитать спецификацию и реализовтаь самому, если нет готового решения.