我们使用username-password grant将我们的JS客户端连接到我们的REST服务器.在某种程度上,oauth/token返回的令牌是我们的会话,因为它允许在有限的时间内访问后端.
每当我们使用令牌向后端发出请求时,我们都想刷新该会话/令牌.
我知道服务器发出了这个刷新令牌,我可以使用它在令牌过期后刷新令牌.
问题是:我不想让客户端负责捕获令牌过期的异常,并在令牌过期之前重新验证或安排刷新.我希望令牌能够刷新,直到它在有限的时间内不再使用 - 就像会话一样.(我也不希望它发出每个"数据"请求的刷新请求,虽然我想我记得读过,刷新令牌只有一次...?!)
有没有办法在Spring安全性中做到这一点,还是我必须构建一些令牌存储或我选择的任何部分的自定义实现?
因为我无法找到答案(因此是帖子)我在想:也许这样做是不明智的,尽管我不明白为什么.如果我可以窃取令牌,我也可以窃取刷新令牌.所以我想我真的没有看到首先有一个刷新令牌的重点..
编辑
为了回应Luke Taylor的回答,我将澄清我们的用例.
因此,我们有一个REST服务器,需要提供对我们可信赖的应用程序的完全访问权限,该应用程序执行自己的安全性工作,同一服务器需要为新的多租户javascript客户端应用程序的用户提供访问权限.在生产中,我们将有几个REST服务器,每个服务器都有自己的数据库,但核心总是相同,所以理论上一个服务器应该能够处理所有.
java spring spring-security oauth-2.0 spring-security-oauth2