首页 > 解决方案 > 如何使用 Spring Boot 和 OAuth2.0 配置体验和生成新访问令牌以进行登录

问题描述

我已经使用 OAuth 2.0 授权实现了 Spring Boot。

当我调用 /oauth/token 端点时,我收到下一个输出:

 `{
    "access_token": "03497838-790f-495f-91f4-029628ad084b",
    "token_type": "bearer",
    "refresh_token": "386ce1bd-5f76-4ea5-9091-5b46cec5429d",
    "scope": "tester"
}`

问题是我想至少每小时接收一次新的访问令牌。我看到可以配置“expire_in”,但我应该怎么做呢?

我尝试添加令牌有效性,但没有帮助

    @Bean
public AuthorizationServerTokenServices tokenServices() {
            DefaultTokenServices tokenServices = new DefaultTokenServices();
            tokenServices.setTokenStore(tokenStore());
            tokenServices.setSupportRefreshToken(true);
            tokenServices.setClientDetailsService(clientDetailsService());
            //tokenServices.setTokenEnhancer(endpoints.getTokenEnhancer());
            tokenServices.setAccessTokenValiditySeconds(10);
    return tokenServices;
}

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {

    endpoints
        .approvalStoreDisabled()
        //.approvalStore(approvalStore())
        .authorizationCodeServices(authorizationCodeServices())
        .tokenStore(tokenStore())
        .tokenServices(tokenServices())
        .authenticationManager(authenticationManager)
        .userDetailsService(restUserDetailsService);
}

我运行了不同的配置,有时它会禁用令牌,但较新的会创建新的。

我发现默认到期时间是 12 小时,这对我来说太长了。

有什么方法可以指定 Spring 何时将访问令牌视为无效并创建一个新令牌?

标签: springspring-bootspring-securityoauth-2.0spring-security-oauth2

解决方案


我发现如果你想让你的令牌过期,那么你需要在 db 表中的 access_token_validity 表 oauth_client_details 列中设置验证令牌周期。然后收到的令牌将包含“expires_in”部分,过期时间后您将获得新令牌。


推荐阅读