单点登录的标准流程

用户访问app系统,app系统是需要登录的,但用户现在没有登录。

跳转到CAS server,即SSO登录系统, SSO系统也没有登录,弹出用户登录页。

用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。

SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。

app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。

验证通过后,app系统将登录状态写入session并设置app域下的Cookie。

至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。接下来,我们再看看访问app2系统时的流程。

用户访问app2系统,app2系统没有登录,跳转到SSO。

由于SSO已经登录了,不需要重新登录认证。

SSO生成ST,浏览器跳转到app2系统,并将ST作为参数传递给app2。

app2拿到ST,后台访问SSO,验证ST是否有效。

验证成功后,app2将登录状态写入session,并在app2域下写入Cookie。

这样,app2系统不需要走登录流程,就已经是登录了。SSO,app和app2在不同的域,它们之间的session不共享也是没问题的。

SSO系统登录后,跳回原业务系统时,带了个参数ST,业务系统还要拿ST再次访问SSO进行验证,假如SSO登录认证通过后,通过回调地址将用户信息返回给原业务系统,原业务系统直接设置登录状态,这样流程简单,也完成了登录,不是很好吗?

其实这样问题时很严重的,如果我在SSO没有登录,而是直接在浏览器中敲入回调的地址,并带上伪造的用户信息,是不是业务系统也认为登录了呢?这是很可怕的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单点登录(SSO)看这一篇就够了-云栖社区-阿里云 背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每...
    DavieKong阅读 806评论 0 4
  • 用户访问app系统,app系统是需要登录的,但用户现在没有登录。跳转到CAS server,即SSO登录系统,以后...
    月下围城阅读 945评论 0 0
  • 背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登...
    指尖跳动阅读 291评论 0 3
  • 背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登...
    do_young阅读 620评论 1 3
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,609评论 16 22