【问题标题】:Configure JWT token expire time when JdbcStore is used使用 JdbcStore 时配置 JWT 令牌过期时间
【发布时间】:2020-11-08 03:01:22
【问题描述】:

我正在尝试使用带有 jdbcTokenStore 的 JWT 通过 OAuth2 实现 Spring Security:

    @Bean
    public TokenStore tokenStore() {
        return new JdbcTokenStore(dataSource);
    }

    @Bean
    @Primary
    public DefaultTokenServices tokenServices() {
        final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
        defaultTokenServices.setTokenStore(tokenStore());
        defaultTokenServices.setSupportRefreshToken(true);
        defaultTokenServices.setAccessTokenValiditySeconds(60);
        defaultTokenServices.setRefreshTokenValiditySeconds(80);
        defaultTokenServices.setReuseRefreshToken(false);
        return defaultTokenServices;
    }

Github

但是在我使用 Postman 创建 Token 后,我总是得到价值:

{
    "access_token": "....",
    "token_type": "bearer",
    "refresh_token": "....",
    "expires_in": 41502,
    "scope": "read",
    "organization": "admin Drivelog",
    "jti": "2f33707a-30e3-4145-9d9d-7c2e4a4535dd"
}

ypi 知道如何配置访问令牌过期时间。由于某种原因,setAccessTokenValiditySeconds 无法正常工作。

【问题讨论】:

  • 检查数据库表oauth_client_details列值access_token_validity & refresh_token_validity
  • 我创建了这张表,但由于某种原因它总是空的
  • 您的实现看起来不错。你能分享邮递员请求的截图吗?
  • @PeterPenzov 如果 oauth_client_details 为空,您将 client_id 和秘密等存储在哪里? Thirumal 提到的列允许您基于每个用户进行配置。
  • 查看我为另一个问题所做的描述:stackoverflow.com/questions/62956660/…

标签: spring spring-boot spring-security oauth-2.0 spring-security-oauth2


【解决方案1】:

您可能忘记配置资源服务器以使用令牌服务,例如:

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

@Autowired
private ResourceServerTokenServices tokenServices;

@Autowired
private JwtAccessTokenConverter accessTokenConverter;

@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
    resources.tokenServices(tokenServices);
}

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .requestMatchers()
        .and()
        .authorizeRequests()
        .antMatchers("/actuator/**", "/api-docs/**","/oauth/*").permitAll()
        .antMatchers("/jwttest/**" ).authenticated();
}
}

https://medium.com/@dassum/securing-spring-boot-rest-api-with-json-web-token-and-jdbc-token-store-67558a7d6c29中找到

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 2019-04-18
    • 2020-08-18
    • 2016-08-08
    • 2020-08-17
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多