服务器端应用程序的OAuth

时间:2013-05-10 05:38:31

标签: oauth oauth-2.0

我需要与仅支持OAuth2的API进行交互。

问题是,我想编写一个纯粹的服务器端应用程序,它应该每天都没有GUI轮询API。

API使我能够以编程方式获取应用程序令牌,但看起来我需要实现整个GUI流来获取后续访问令牌。这是因为我需要通过应用程序提供商基于Web的登录屏幕登录。

看起来我需要获取该访问令牌,并将其复制为我重新创建它的服务器端凭据。如果它过期或变坏,我将需要通过GUI流程返回以获取我的服务器端访问令牌。

我的理解是否正确,因为这感觉非常笨重?

具体来说:

我可以避免实施链接到应用程序提供商登录表单的过程吗?

在这样做之后,我必须取消访问令牌并将其存储在我的服务器端应用程序中。我似乎无法控制是否会过期?

我可以看到,例如Facebook专门支持服务器端和客户端流程。我想知道我是否会遇到OAuth 2特定实现中的限制?

2 个答案:

答案 0 :(得分:3)

我不知道您实际上希望该应用的行为,但有一件事是肯定的 - 您必须输入一次用户凭据。

一旦您进行身份验证和授权(关于自动身份验证的SO有很多未解决的问题),您的应用不仅会获得访问令牌,还会获得刷新令牌。刷新令牌正是您在用例中所需要的。您可以将其存储在服务器端 - 刷新令牌没有到期时间。它一直存在,直到用户明确撤销权限。

对于任何OAuth服务提供商,都有一个令牌交换端点,您可以在其中交换(刷新令牌+访问令牌)对的刷新令牌。因此,在后端(您的服务器),您可以随时点击此端点 - 获取一个短期访问令牌并执行您需要的操作。这样可以节省您每次都遵循GUI流程的所有工作。

请参阅此链接 - https://developers.google.com/accounts/docs/OAuth2WebServer#offline

编辑 - 阅读评论后做了一些更改。您只需要知道如何在应用中使用刷新令牌。

答案 1 :(得分:2)

我发现在这个问题中我问的问题的典型解决方案是使用XAuth。

许多提供商(如Twitter)和我目前正在使用的应用程序支持XAuth,无需基于用户界面的身份验证即可提供简化的流程。

What is the difference among BasicAuth,OAuth and XAuth?