单页应用程序的服务器应如何处理过期的oAuth令牌?

时间:2015-04-24 01:57:42

标签: oauth-2.0 google-oauth

作为背景,我使用的是Google OAuth2 NodeJS客户端,但我认为我的问题更抽象/技术独立。

我的网站是单页应用程序,通过AJAX与服务器通信。

当用户首次访问我的网站时,我会执行OAuth2流程,将其重定向到Google进行登录,然后使用访问令牌重定向回我的网站。我将此访问令牌存储在cookie中,并使用它来处理通过AJAX对服务器进行的各种调用。

我的挑战是,当access_token到期时,我不确定该怎么做。我是否应该将refresh_token存储在cookie中,并使用它,或者是否存在安全问题?

我应该重定向浏览器以再次执行登录流程吗?对于单页应用程序而言,这似乎相当丑陋。

1 个答案:

答案 0 :(得分:1)

您可以在后台通过js执行OAuth2流程(如使用弹出窗口的登录流程),如果您的应用程序ID尚未撤销访问权限,则用户不应该看到任何有关它的信息。虽然您可以在用户电子邮件上设置提示进行身份验证,但这可能无效。 您提到的另一种方式是刷新令牌,您可以使用它来请求新的访问令牌,而无需用户交互。也许这是更好的主意,但请记住,如果将access type设置为离线,则只会获得刷新令牌。