关于多系统之间的统一登录问题

关于多系统之间的统一登录问题

问题描述

现在多个管理系统,源码无法知道,语言也不同,但是可以知道每个系统的账号密码,现在想开发一个管理系统,管理这些系统,并想实现在这里系统里面直接登陆跳转到另一个系统,实现单点登陆(不知道这个需求算不算实际意义上的单点登录,这里先这么称呼)

出现的问题

因为无法查看后台源码,根据一个个查看js,进行破解,大致知道部分系统的登陆方式,在统一管理系统里面使用请求接口,获取到登陆信息,可以获取到,但是因为有些系统是将token和一些初始化登陆信息获取到后放到本地进行储存,这里跳转到该系统的登录后首页就会出现某些信息无法显示,请问有没有什么好的方法可以实现这一需求?

希望可以在统一的管理系统里面,实现点击某个子系统,直接登录跳转到对应系统的登陆后首页,求个路大佬支招,感谢


回答:

使用CAS呢?


回答:

子系统的代码应该是要改的;

单点登陆(SSO) 的大体流程,应该是这样

  1. 用户在访问任意一个子系统时,都会先去获取用户信息,如果没有携带子系统后台的 session 或者 session 过期,后台会返回一个响应,这个响应会在浏览器设置一个 cookie,作为子系统后台和用户的 session。同时,前端会根据这个响应重定向到 SSO 的登陆页面,并且会带上几个参数(子系统id,子系统的登陆接口,一个可以让 SSO 确认前面 session 是否有效的 id,以及用户最初的访问地址)
  2. 在 SSO 登陆页面,
    2.1 如果用户携带了 SSO 后台的 session 并且有效,就会自动登陆成功,SSO 后台返回一个 302 ,让浏览器重定向到子系统后台的登陆成功接口
    2.2 如果用户没有携带 SSO 后台的 session 或者 session 过期, SSO 的登陆页会在浏览器设置一个新的 SSO 的 cookie,作为用户和 SSO 的 session
    2.3 登陆成功后,SSO 返回一个 302 ,让浏览器重定向到子系统后台的登陆成功接口
  3. SSO 后台让浏览器重定向到子系统后台的登陆成功接口时,通常会带上几个参数:用户最初的访问地址,一个 SSO 后台告诉子系统后台这次登陆是否成功的标记(也就是前面子系统后台 session 是否有效的标记),这个登陆成功接口,也会返回一个 302,跳到参数里的用户最初访问地址
  4. 再次访问原地址的时候,浏览器会携带上最初和子系统交接的 session ,如果前面流程正常,那么本次登陆成功。

以上,只有子系统 session 和 SSO session 都过期时,用户才会需要重新登陆。

以上是 关于多系统之间的统一登录问题 的全部内容, 来源链接: utcz.com/a/166775.html

回到顶部