【发布时间】:2019-05-03 01:36:08
【问题描述】:
假设我们有一个管理员想要使所有用户令牌无效(有效地在任何地方注销用户),但不阻止他的帐户。用户应该仍然能够正常登录。
例子:
clientIds.forEach(clientId -> {
Collection<OAuth2AccessToken> accessTokens = tokenStore.findTokensByClientIdAndUserName(clientId, username);
accessTokens.forEach(accessToken -> tokenServices.revokeToken(accessToken.getValue()));
});
只有当访问令牌仍然有效(未过期)时才能正常工作,因为找到了访问令牌并基于它们,revokeToken 使访问令牌和刷新令牌都无效。但是,如果访问令牌已过期,findTokensByClientIdAndUserName 将找不到任何内容,因此没有任何内容无效,并且刷新令牌仍然有效并可以使用。
我到处看了看,似乎每个人都通过使用访问令牌或通过将刷新令牌值作为请求参数传递来撤销刷新令牌。
是否可以在不使用访问令牌的情况下找到刷新令牌?
【问题讨论】:
标签: spring-security oauth-2.0 spring-security-oauth2 refresh-token