spring security oauth2 TokenEnhancer加强token不生效

问题

在AuthorizationServerConfigurerAdapter.configure(AuthorizationServerEndpointsConfigurer endpoints)方法中配置了
endpoints.tokenEnhancer();但是没有生效。
要加强token是因为原始token信息带的太少,需要附加一些额外信息给调用方

解决

看了一下config里面,配置的tokenEnhancer实际上是给TokenService用的。
security默认生成一个DefaultTokenService,这里set了TokenEnhancer,但是这个系统里我是自定义的TokenService,因为要配置一些失效时间,所以默认没用了,这个endopoints配置也就没用了,到TokenService里自行配置即可

这是配置类,省略了不相关的代码

@Configuration
@AllArgsConstructor
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
	@Override
	public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
		TokenEnhancer customTokenEnhancer =  XXX;
		endpoints
				.tokenServices(tokenService)
				.tokenEnhancer(customTokenEnhancer );
	}
}

点进父类看一下,这个tokenEnhancer()实际在下面代码被调用了,也就是他是tokenService的一部分

private DefaultTokenServices createDefaultTokenServices() {
	DefaultTokenServices tokenServices = new DefaultTokenServices();
	tokenServices.setTokenStore(tokenStore());
	tokenServices.setSupportRefreshToken(true);
	tokenServices.setReuseRefreshToken(reuseRefreshToken);
	tokenServices.setClientDetailsService(clientDetailsService());
	tokenServices.setTokenEnhancer(tokenEnhancer());
	addUserDetailsService(tokenServices, this.userDetailsService);
	return tokenServices;
}

在其他方法中可以看到,如果tokenService被覆盖的话,这个设值是无效的

private AuthorizationServerTokenServices tokenServices() {
	if (tokenServices != null) {
		return tokenServices;
	}
	this.tokenServices = createDefaultTokenServices();
	return tokenServices;
}

因此加强token设置了之后没有生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值