Spring OAUTH2-访问令牌到期时间

Spring OAUTH2-访问令牌到期时间,spring,spring-security-oauth2,Spring,Spring Security Oauth2,是否可以通过编程方式更新/重置访问令牌的到期时间?如果是,那么哪个类/筛选器是执行此操作的最佳位置,以便可以在JDBC令牌存储中更新到期时间。您可以在客户端配置期间设置访问令牌的到期时间。 public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.jdbc(dataSource) .

是否可以通过编程方式更新/重置访问令牌的到期时间?如果是,那么哪个类/筛选器是执行此操作的最佳位置,以便可以在JDBC令牌存储中更新到期时间。

您可以在客户端配置期间设置访问令牌的到期时间。
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.jdbc(dataSource)                        
                .withClient("my-client-with-password")
                .authorizedGrantTypes("password")
                .authorities("ROLE_CLIENT") 
                .scopes("read")
                .resourceIds("oauth2-resource")
                .accessTokenValiditySeconds(30);
此处更改的值将在jdbc令牌存储中更新

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.jdbc(dataSource)                        
                .withClient("my-client-with-password")
                .authorizedGrantTypes("password")
                .authorities("ROLE_CLIENT") 
                .scopes("read")
                .resourceIds("oauth2-resource")
                .accessTokenValiditySeconds(30);

为此,必须从数据库中删除现有客户机详细信息。下次进行令牌调用时,这些客户端详细信息将与更新的有效期一起添加到数据库中。

要全局更新访问令牌的过期时间,您应该创建
DefaultTokenServices
&注入到
授权服务器端点配置器中,如下所示:

public AuthorizationServerTokenServices customTokenServices(){
  TokenServices tokenServices = new DefaultTokenServices();
  tokenServices.setReuseAccessToken(reuseAccessToken);
  tokenServices.setTokenStore(tokenStore());
  tokenServices.setSupportRefreshToken(true);
  tokenServices.setAccessTokenValiditySeconds(<seconds>);
  tokenServices.setClientDetailsService(clientDetailsService);
  return tokenServices;
}

在扩展“AuthorizationServerConfigurerAdapter”的类中,我使用了上面的行。但是“TokenServices”并不存在,所以我使用了“DefaultTokenServices”,我认为它有效。谢谢!设置ClientDetailsService非常重要,以防您不使用内存中的客户端。