关于多系统之间的统一登录问题
问题描述
现在多个管理系统,源码无法知道,语言也不同,但是可以知道每个系统的账号密码,现在想开发一个管理系统,管理这些系统,并想实现在这里系统里面直接登陆跳转到另一个系统,实现单点登陆(不知道这个需求算不算实际意义上的单点登录,这里先这么称呼)
出现的问题
因为无法查看后台源码,根据一个个查看js,进行破解,大致知道部分系统的登陆方式,在统一管理系统里面使用请求接口,获取到登陆信息,可以获取到,但是因为有些系统是将token和一些初始化登陆信息获取到后放到本地进行储存,这里跳转到该系统的登录后首页就会出现某些信息无法显示,请问有没有什么好的方法可以实现这一需求?
希望可以在统一的管理系统里面,实现点击某个子系统,直接登录跳转到对应系统的登陆后首页,求个路大佬支招,感谢
回答:
使用CAS
呢?
回答:
子系统的代码应该是要改的;
单点登陆(SSO) 的大体流程,应该是这样
- 用户在访问任意一个子系统时,都会先去获取用户信息,如果没有携带子系统后台的 session 或者 session 过期,后台会返回一个响应,这个响应会在浏览器设置一个 cookie,作为子系统后台和用户的 session。同时,前端会根据这个响应重定向到 SSO 的登陆页面,并且会带上几个参数(子系统id,子系统的登陆接口,一个可以让 SSO 确认前面 session 是否有效的 id,以及用户最初的访问地址)
- 在 SSO 登陆页面,
2.1 如果用户携带了 SSO 后台的 session 并且有效,就会自动登陆成功,SSO 后台返回一个 302 ,让浏览器重定向到子系统后台的登陆成功接口
2.2 如果用户没有携带 SSO 后台的 session 或者 session 过期, SSO 的登陆页会在浏览器设置一个新的 SSO 的 cookie,作为用户和 SSO 的 session
2.3 登陆成功后,SSO 返回一个 302 ,让浏览器重定向到子系统后台的登陆成功接口 - SSO 后台让浏览器重定向到子系统后台的登陆成功接口时,通常会带上几个参数:用户最初的访问地址,一个 SSO 后台告诉子系统后台这次登陆是否成功的标记(也就是前面子系统后台 session 是否有效的标记),这个登陆成功接口,也会返回一个 302,跳到参数里的用户最初访问地址
- 再次访问原地址的时候,浏览器会携带上最初和子系统交接的 session ,如果前面流程正常,那么本次登陆成功。
以上,只有子系统 session 和 SSO session 都过期时,用户才会需要重新登陆。
以上是 关于多系统之间的统一登录问题 的全部内容, 来源链接: utcz.com/a/166775.html