Возможно (и / или хорошая идея) повторно использовать токены OAuth между приложениями? - PullRequest
4 голосов
/ 08 апреля 2011

Я работаю над приложением для iPhone, которое использует xAuth для входа в Twitter. Приложение также общается с моим собственным веб-сервисом. Вместо того, чтобы поддерживать модель пользователя внутри веб-службы, я бы хотел, чтобы каждый, кто уже прошел аутентификацию через Twitter, мог отправлять запросы.

Вариант использования высокого уровня таков: пользователь входит в систему и взаимодействует с Twitter через приложение. Они также могут взаимодействовать с моим веб-сервисом через приложение. Сам веб-сервис никогда не взаимодействует с Twitter. Вместо того, чтобы поддерживать отдельную систему аутентификации на моей стороне, я хотел бы, чтобы сервер сказал: «Хорошо, если Twitter говорит, что вы @joshfrench, то вы можете иметь доступ».

Я не уверен, как мне проверять запросы на стороне сервера. Как я могу передать некоторые доказательства аутентификации от мобильного клиента моему веб-сервису? Могу ли я отправить существующий токен Twitter и проверить его с сервера? Или как-то подписать запрос с учетными данными моего приложения Twitter? Это даже допустимое использование OAuth?

1 Ответ

1 голос
/ 08 апреля 2011

Если вы храните ключ и секретный файл своего приложения в Twitter и на своем приложении для iphone, и на своем сервере, а затем каким-то образом передаете ключ / секретный ключ oauth (также называемый «токеном доступа») пользователя из приложения iphone на сервер, то выможет выполнять вызовы API такого же типа с сервера.

consumer = OAuth::Consumer.new(app_key, app_secret, …)
access_token = OAuth::AccessToken.new(consumer, user_key, user_secret)
response = access_token.get('/stuff.xml')

Итак, можно ли передавать эту информацию из приложения на сервер?Если вы делаете это надежно, и пользователь ожидает, как приложение будет вести себя, то это вполне разумное использование oauth.

Возможно, это не разрешено условиями обслуживания Twitter - я мог бы представитьбудучи тем, что говорит, что вы не можете передать секрет доступа пользователя по сети, или что-то подобное.(полное дикое предположение, я не думаю, что это особенно вероятно)

...