繁体   English   中英

Spring OAUTH2 - 访问令牌到期时间

[英]Spring OAUTH2 - Access token expiry time

是否可以以编程方式更新/重置访问令牌的到期时间? 如果是,那么哪个类/过滤器最适合这样做,以便可以在JDBC令牌存储中更新到期时间。

要全局更新访问令牌的到期时间,您必须创建DefaultTokenServices实例并注入AuthorizationServerEndpointsConfigurer如下所示:

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

并将此tokenServices放在AuthorizationServerEndpointsConfigurer

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
  endpoints.tokenServices(customTokenServices()).
}

您可以在客户端配置期间设置访问令牌的到期时间。 此处更改的值将在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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM