使用jhipster生成的微服务,采用其默认的JWT认证方式。代码中获取用户是通过SecurityUtils.getCurrentUserLogin().orElse("admin");方式获取用户信息。

在测试系统中,测试完全没有问题。但是发布到正式环境后系统调用gateway中认证通过,但是调用其它的微服务认识失败,报错Invalid JWT signature。

开始以为是nginx代理的问题,但是添加上cookie、autothention后还是不行,最后网上搜索发现可能是prod配置文件的设置问题。经过prod和dev两个配置文件比较,发现如下不同: 

测试配置文件如下:

正式配置文件如下:

secret不一样。而且gateway和其它服务器的secret一串数字也不一样。这个secret是用来生成jwttoken的,gateway中按照自己的加密方式生成token,拿到其它服务中肯定不认识,因为他们的加密不一样。所以将prod中的secret修改成测试文件中的字符串,所有服务器保持一致,问题搞定。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐