【发布时间】: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;
}
但是在我使用 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