我目前有一个使用Spring Security作为OAuth2客户端运行的应用程序。用户可以使用OAuth2提供程序(可以工作)登录,此时Spring Security获取授权代码并将其交换为访问令牌。可以通过以下方式访问此令牌:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
OAuth2AuthorizedClient client = oAuth2AuthorizedClientService.loadAuthorizedClient(oAuth2RegistrationName, authentication.getName());
OAuth2AccessToken token = client.getAccessToken();
字符串
此令牌当前用于使用资源服务器访问受保护的资源。然而,我遇到的一个问题是,我的应用程序保留访问令牌的时间太长,直到它们变得过时,资源请求开始失败。例如,一旦用户进行了身份验证,OAuth2AccessToken token = client.getAccessToken()
将永远返回相同的令牌(直到应用程序重新启动)。
如何摆脱访问令牌并强制用户使用OAuth2流重新登录?我的OAuth2/OIDC身份提供者不支持刷新令牌,所以我需要强制用户重新登录。
1条答案
按热度按时间gpnt7bae1#
我觉得你应该创建一个自定义过滤器来检查token是否过期
你能试试这个方法吗?如果有用的话,给予我一个反馈
字符串
**UPDATE:**不返回401代码,可以强制返回登录页面。大概是这样的:
型
}