spring - 如何使用 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 何时将访问令牌视为无效并创建一个新令牌?
解决方案
我发现如果你想让你的令牌过期,那么你需要在 db 表中的 access_token_validity 表 oauth_client_details 列中设置验证令牌周期。然后收到的令牌将包含“expires_in”部分,过期时间后您将获得新令牌。
推荐阅读
- python - urllib RobotFileParser - robots.txt 中看似冲突的规则
- javascript - 在 React 中将 mapbox 线变成 turf.js 曲线(贝塞尔)线
- html - 如果单词超过宽度,如何设置行高
- ansible - 使用多个页面迭代 Ansible Tower API
- c# - C# Rabbitmq 生产者
- azure - 使用 DMS 进行在线迁移的其他选项
- windows - 在 Windows 10 上运行 PostgreSQL 服务的用户的默认 pgpass.conf 位置是什么?
- sql - 在 Redshift 中创建视图时选择列的名称
- github - 为另一个项目运行 gitlab-ci
- gensim - 如何将预训练 LDA 模型传递给 Gensim 中的 ldaseq 用于 DTM?