相关疑难解决方法(0)

Spring Oauth2 Client,自动刷新过期的access_token

让我解释一下我的用例。

我需要一个 spring boot oauth2 客户端应用程序(不是资源服务器,因为我们已经有一个单独的资源服务器)。另外我有以下要求:

  1. 对于每个到资源服务器的外出请求,我们需要发送 id_token。(通过自定义 resttemplate 完成)。

  2. 对于任何请求,无论它是否调用资源服务器,如果访问令牌过期,我的应用程序必须自动刷新它(没有任何用户干预,如任何弹出或重定向。)

  3. 如果 refresh_token 也已过期,则必须注销用户。

问题:

对于第 2 点和第 3 点,我花了很多时间阅读文档和代码以及 Stack Overflow,但无法找到解决方案(或不理解)。所以我决定把我在许多博客和文档中找到的所有部分放在一起,并提出我的解决方案。以下是我对第 2 点的解决方案。

  1. 我们可以看看下面的代码并建议这种方法是否有任何问题吗?

    1. 如何解决第 3 点我正在考虑扩展第 2 点的解决方案,但不确定我需要编写什么代码,有人可以指导我吗?
/**
 * 
 * @author agam
 *
 */
@Component
public class ExpiredTokenFilter extends OncePerRequestFilter {

    private static final Logger log = LoggerFactory.getLogger(ExpiredTokenFilter.class);

    private Duration accessTokenExpiresSkew = Duration.ofMillis(1000);

    private Clock clock = Clock.systemUTC();

    @Autowired
    private OAuth2AuthorizedClientService oAuth2AuthorizedClientService;

    @Autowired
    CustomOidcUserService userService;

    private DefaultRefreshTokenTokenResponseClient accessTokenResponseClient;

    private JwtDecoderFactory<ClientRegistration> jwtDecoderFactory;

    private static final String …
Run Code Online (Sandbox Code Playgroud)

spring-security oauth-2.0 spring-security-oauth2 spring-oauth2

4
推荐指数
1
解决办法
4530
查看次数