首页>>后端>>Spring->Spring

Spring

时间:2023-11-29 本站 点击:0

背景

客服中心反馈广东平台同步数据到集团平台不成功,听到这个心里就隐隐约约猜到是啥,但为了验证自己的猜想就查看了相关的日志信息:

靠,真的是token不可用(不应该啊,昨天刚刚改成永久不失效的呀),没办法只能再查一下,争取18点下班(嘿嘿嘿).

业务背景

因为业务的关系,公司部署的是一个主平台,多个子平台,子平台的用户信息和账号信息都得同步到主平台,这样就可以在主平台登录然后选择或者直接跳转到对应的子平台,同步的逻辑是用http接口实现的.

因为之前业务和我前任的关系,oauth_client_details表中共用一个client_id,并设置了刷新时间,这就存在一个问题,A节点刷新token的话会导致B节点的token失效,而且每个子平台Redis设置缓存的时间可能存在不一致;这就导致了有子平台同步数据失败.

有考虑过给每个子平台设置不同的client_id,但是随着业务的不断增长和子平台的增加维护成本太大了,跟栈长讨论了一下,决定是把token设置为永久token,反正都是平台间调用,不对外暴露.

事故现场

相关配置

设置这个之前还是查了相关信息的

以为将access_token_validity和refresh_token_validity 设置为null就可以永久了(傻逼了,哈哈哈),不设置就是使用默认的值12个小时,难怪一天就失效了,这锅背的不怨啊.调用一下Spring-Security oauth2获取token的接口/auth/oauth/token?grant_type=client_credentials

expires_in 不返回才是永久的,说明没生效.

正确的配置

根据官方相关的说明找到相关代码org.springframework.security.oauth2.provider.token.DefaultTokenServices#createAccessToken

org.springframework.security.oauth2.common.DefaultOAuth2AccessToken#isExpired

可以大胆推测如果access_token_validity为负数就是永久不过期的,说干就干,修改相关配置

调用相关接口

nice,看了一下时间,可以准时下班,哈哈哈!

总结

修改框架内置好的参数一定要读透相关表达的含义,错了别怕,胆大心细,大胆推测,动手证明。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/303.html