如果我的用户会话持续 30 分钟,我的 Oauth2 访问令牌应该持续的正确时间是多少?

Posted

技术标签:

【中文标题】如果我的用户会话持续 30 分钟,我的 Oauth2 访问令牌应该持续的正确时间是多少?【英文标题】:If my user sessions lasts 30 minutes, what is the correct amount of time that my Oauth2 access token should last? 【发布时间】:2015-09-21 12:29:40 【问题描述】:

我想澄清一些关于 OAuth2 的事情。假设我有一个基于 Web 的应用程序和一个资源 /dashboard,它是用户特定的,我希望通过 OAuth2 进行保护。进一步假设我的用户会话持续 30 分钟。通常我看到访问令牌的有效性值为 30 秒。因此,如果我的用户登录,获取访问令牌,然后在 30 秒内无法访问 /dashboard,那么他们是否必须向浏览器发出两个请求 - 一个获取访问令牌,第二个使用该访问令牌获取 /dashboard 资源?这似乎非常不方便。我是否应该让我的访问令牌长度与我的会话长度相同以避免这种不便?

我正在使用 Spring 4.1.5.RELEASE、Spring security 3.2.5.RELEASE 和 oauth2 2.0.5.RELEASE(如果有任何价值的话)。

谢谢,- 戴夫

【问题讨论】:

【参考方案1】:

访问令牌有效期比标准更方便。例如,Twitter 从不撤销令牌,除非用户明确这样做。因此,如果您的会话应该在 30 分钟内有效,您可以将访问令牌有效期设置为 30 分钟。

【讨论】:

听起来不错,但假设用户在会话中继续活跃超过 30 分钟,当最初的 30 分钟结束时,他们将不得不请求新的访问令牌,对吗? 好的,但这比普通的 Spring 安全性更好吗?对于最终用户来说,这似乎更麻烦,而没有真正为您带来任何好处。

以上是关于如果我的用户会话持续 30 分钟,我的 Oauth2 访问令牌应该持续的正确时间是多少?的主要内容,如果未能解决你的问题,请参考以下文章

如何在时间段为 30 分钟的春季实现会话管理

使登录会话持续 1 年 [重复]

如果不活动10分钟,我如何使用php上的会话注销用户[重复]

PHP 会话在 40 分钟后到期

Laravel 4会话不会在页面加载过程中持续存在

范围 codeigniter 会话到期