一套系统一定需要考虑安全的问题.
登录
首先要确定的是,用谁的登录页面,这个决定了使用谁的SSO. 如果使用系统外的登录页面,我们称为集成外部SSO,如果使用我们自己的登录页面,我们成为内部的功能扩展
登录原理
登录页面的渲染,是通过二次跳转实现的,主要是为了避免在iframe中的登录过期以后,能顺利的主屏幕跳转到主页面,而不是在iframe内部跳转.
- 一个请求如果没有携带登录标识(token),就会被SSOFilter拦截,跳转到登录页面
- 请求方法
com.istock.union.controller.PreLoginController.toLogin - 跳转到空白页面,再使用top.href进行的跳转,再次请求
com.istock.union.controller.PreLoginController.preLogin,渲染登录页面,这个preLogin,可以在后台增加部分内容,比如登录页面上需要展示一些公告信息…. - 登录页面渲染过程中,会加载iframe,请求
com.istock.union.controller.PreLoginController.showLogin,中间有个判断,是否需要加载登录框,如果已经携带登录标识,可以直接跳过登录,如果没有登录标识,显示登录框 - showLogin的存在,还可以扩展非用户名密码登录,比如扫码,安全key登录等等…
- 输入用户名密码,
LoginByPasswdController.login,检查数据库用户名密码,调用InnerTokenService,申请token,并且在页面进行保存,最后跳转到login.success.url,完成登录.
2021/10/28大约 7 分钟
