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