一、该问题的重现步骤是什么?
1. 第三方系统作为Oauth2客户端,已经开发完成。接入了BladeX项目。
2. 按道理,同一个浏览器如果BladeX已经登陆了,那么我第三方系统再单点登录进来的时候,应该是直接“同意/授权”,而不是还要再输入账号密码。
3.或者,同一个浏览器,BladeX系统未登录情况下,当我第三方系统,先通过单点登录,输入账号密码,授权登录之后。我再访问BladeX系统,也不应该还需要登录了。
二、你期待的结果是什么?实际看到的又是什么?
现在的问题就是,我们的单点登录跟系统登录,好像是完全两套系统。如果我一个系统集成到BladeX的单点登录中,即便是登陆了BladeX,还需要重复登陆单点登录。
我期望的结果是:BladeX登录后,子系统不需要再登录了。只需要授权即可。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
并不是所有用户都需要单点登录,所以我们没有把saber、sword的登陆页强制转换成sso登录,而是给了一个链接让用户主动触发sso的登录地址。
你的需求很简单,保持现状的同时,nginx做一个反向代理配置,把现有登陆页,登录的时候直接跳转到单点登录页面就行,不需要在手动点击。
如果不想配置nginx,也可以在登陆页写一段js,登陆页渲染时直接跳转到配置好的单点登录页。
这样你访问所有系统都会先跳转到单点登录页面了。
现在的问题是,抛开第三方系统。我即便是在登录页右下方,点击了SSO单点登录,然后登录成功在SSO页面授权跳转回首页,还是需要在登录页登录。
您看下地址栏
第一步:
第二步:
第三步:回来还是要登录。
我仔细产看了下,是返回的时候,缺少state参数。
正常来说,oauth/authorize发送之后,回调的时候,会给一个code和一个state参数。这样就是对的,我第三方接进来OK了。
但是通过我们自己BladeX的登录页面的“单点登录”进来,请求是这样的:
跳转后的地址,缺少了state字段,导致了跳转之后,无法进入首页,还是进入的登录页。
扫一扫访问 Blade技术社区 移动端