一、该问题的重现步骤是什么?
1. 服务器上部署了一套环境 地址是 192.168.100.68
2. 本地idea启动了一套环境 地址是 192.168.100.46 (本地环境和服务器连接的是同一个postgres,不同的redis )
3. 本地saber配置了 192.168.100.68 作为sso认证地址
4. 登录本地环境,使用单点登录认证,点击之后跳转到 192.168.100.68 进行认证,输入账号密码之后,点击 同意认证,之后跳转回 192.168.100.46 时提示报错 “认证信息错误或无效”
二、你期待的结果是什么?实际看到的又是什么?
期望时认证通过,实现单点登录功能
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
本地和认证服务器的版本都是 4.3.0
四、请提供详细的错误堆栈信息,这很重要。
debug之后发现是从redis查询用户未查到(应该是通过code查询)
五、若有更多详细信息,请在下面提供。
redis键值
你们如果采用了其他服务器的sso,那么认证服务也需要是sso所在的服务器。
他的认证流程是这样的:
1. 登录sso点击跳转
2. sso服务将登陆后的用户保存到redis,且自动生成一个code来作为key保存
3. sso跳转到本地系统后,携带code,本地系统获取code去调用sso的auth服务
4. sso的auth服务根据code到redis找用户,找到后则认证成功,返回token
5. 本地系统获取token后执行登录成功的操作
其中需要确定的是,blade-auth服务认证code,是需要链接sso redis才行,否则无法认证通过。
也就是说采用了sso,那么blade-auth服务也需要同步。否则将认证失败。
是不是要客户端和服务端共用一个auth服务,但是两个平台不在一个nacos上,怎么弄呢
不需要在一个naocs,只要auth服务能被客户端访问到就行。
正常场景也是服务点提供sso+auth服务,各个不同的客户端远程调用校验。调用sso的auth服务返回token,那整个流程就结束了。
那是不是要改造下前端sso换token的函数
是的,这里改成线上地址,记得后端把跨域功能开启
好的,后端跨域是在哪里配置的
gateway应该有配置,也可以百度搜一下,或者问下deepseek,这个比较简单的