一、该问题的重现步骤是什么?
A系统(统一门户)
框架版本:BladeX 2.9.1.RELEASE
B系统
框架版本:BladeX 3.0.1.RELEASE
两个系统均实现了 单点登录(统一门户登录后点击图标进入专题域免登录)。
报错复现过程:
首先,A系统(统一门户)的代码很久没有更新了,此时正在运行的包配置文件中是没有配置sign-key的,然后最近统一门户新增了一些业务代码,然后需要更新jar包,更新后发现点击登录会报:请配置32位sign-key的值,然后我就在application.yml中配置了sign-key,配置如下图,然后重新更新jar包后就能正常登录并且使用了。
但是,由于A系统(统一门户)对应的前端有一个按钮是需要调用B系统的后端接口,此时只要一点击就会跳到登录界面然后显示“请求未授权”(此时B系统也没有配置sign-key),然后我就把B系统的application.yml中也配置了跟统一门户相同的sing-key。但是还是同样的问题,麻烦帮忙看一下。


#blade配置
blade:
#token配置
token:
#是否有状态
state: true
single: true
#单用户登录范围
single-level: all
#token签名 使用 @org.springblade.test.SignKeyGenerator 获取
sign-key: t4aNzvA6Z2nf2HvJ5LUoUwfJqzaXqKno
二、你期待的结果是什么?实际看到的又是什么?
麻烦帮忙看一下
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
A系统(统一门户)
框架版本:BladeX 2.9.1.RELEASE
B系统
框架版本:BladeX 3.0.1.RELEASE
四、请提供详细的错误堆栈信息,这很重要。
B系统的错误日志:

B系统的日志,不知道为什么会解析两遍token,第一遍claims有值,第二遍没值:

五、若有更多详细信息,请在下面提供。
a系统和b系统都配置同样的sign-key,那么a生成的token,就可以在b进行鉴权成功。
现在a点击按钮,跳转到b的接口,需要鉴权成功的话,可以在接口地址末尾加上 ?blade-auth=getToken() 这样的方法。
具体操作就类似用户系统的excel导出的写法一致,直接访问新接口,携带token的值就行了。

不过你们的版本比较低,需要去看下 SecureUtil 或者AuthUtil里,关于token获取的逻辑是否有增加从requestParameters里获取的逻辑,具体参考:https://center.javablade.com/blade/BladeX-Tool/src/branch/master/blade-core-auth/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java#L491

扫一扫访问 Blade技术社区 移动端