我正在我的服务器上创建一个Oath 2.0系统,允许用户从应用程序登录我的服务器上的帐户,而无需向应用程序本身提供用户名和密码。据我所知,这是誓言的目的,它看起来效果很好,系统建立在符合所有Oath 2.0规范的基础上,并且功能齐全。但是我不明白为什么我必须让令牌过期...我的意思是我提供刷新uri,他们可以随时轻松地更新令牌(或获得新的有效令牌)。我没有看到任何目的,为什么不让令牌永不过期。我没有看到令牌过期的安全利益或任何目的。有人可以向我解释为什么我必须让我的令牌过期以及为什么他们不能无限期地好起来?
答案 0 :(得分:0)
总之,为了更安全。
在您的问题中,您说免费更新令牌,实际上,当您刷新令牌时,您需要使用授权服务器进行身份验证(提供您的客户端凭据)。因此刷新令牌与访问令牌不相等。它无法让您访问资源。
为什么令牌过期?
正如OAuth 2.0 Threat Model and Security Considerations所说:
3.1.2。受限访问令牌生存期
协议参数“expires_in”允许授权服务器 (根据其政策或代表最终用户)限制 访问令牌的生命周期并将此信息传递给 客户。 此机制可用于发布短期令牌 授权服务器认为不太安全的OAuth客户端,或 通过非安全通道发送令牌的地方。
5.1.5.2。确定到期时间
代币通常应在合理的持续时间后到期。 :此 补充和加强其他安全措施(如 签名)并减少各种令牌泄密的影响。 根据与令牌泄漏相关的风险,令牌可以 几分钟后过期(例如,付款交易)或停留 有效期为几小时(例如,对联系人的读取权限)。
答案 1 :(得分:0)
我找到了另一种用途。当我在每次登录时将令牌存储在我的数据库中。如果有人因为任何原因不再使用设备或删除其令牌(卸载应用程序或清除缓存)而没有正确地#34;退出" (注销将其从数据库中删除)。然后在数据库中存储一个永远不会再使用的令牌。一段时间后,这变得很麻烦,占用了数据库上的宝贵空间,并减慢了未使用令牌的查询执行速度。使用令牌过期我可以运行一个cron作业,每15分钟左右扫描数据库中过期的令牌并删除它们。必须刷新令牌确实会对服务器和客户端造成一些压力,但不会像数百万未使用的令牌那么多。