在应用程序之间重用OAuth令牌是否可能(和/或好主意)?

时间:2011-04-08 14:43:13

标签: web-services authentication oauth xauth

我正在开发一款使用xAuth登录Twitter的iPhone应用程序。该应用程序还与我自己的Web服务进行通信。我不想在Web服务中维护用户模型,而是允许任何已经通过Twitter进行身份验证的人发出请求。

高级用例是这样的:用户通过应用程序登录并与Twitter交互。他们还可以通过应用程序与我的Web服务进行交互。 Web服务本身从不与Twitter交互。我不想在我这边维护一个单独的身份验证系统,而是希望服务器说“好吧,如果Twitter说你是@joshfrench,那么你可以访问。”

但我不确定如何验证服务器端的请求。我如何将一些身份验证证明从移动客户端传递到我的Web服务?我可以发送现有的Twitter令牌并从服务器验证它吗?或以某种方式用我的Twitter应用程序的凭据签署请求?这甚至是对OAuth的有效使用吗?

1 个答案:

答案 0 :(得分:1)

如果你将你的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的服务条款可能不允许 - 我可以想象有些东西说你无法通过网络转移用户的访问密钥,或者某些东西。 (完全疯狂的猜测,我不认为这种情况特别可能)