[英]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.