单点登录

单点登录

本文简单介绍单点登录的实现原理,并以项目组件为例,说明单点登录的跳转流程。

单点登录原理

下面举例说明单点登录跳转流程,涉及子系统A(www.a.com),子系统B(www.b.com),浏览器,cas服务(www.sso.com)

访问子系统A,用户未登录

访问子系统A,用户已登录

  • 用户已登录,再次访问子系统A,子系统A在session中读到用户信息,不会再去cas认证

访问子系统B

  • 此时浏览器已经存在一个票据授权cookie(TGC),子系统B的session中没有用户信息,需要去cas服务器认证
  • cas根据TGC从TGT获取用户信息,根据service参数生成一个ST,返回ST给浏览器并重定向,达到了sso的效果
  • 子系统B拿到ticket,去cas验证ticket是否有效,cas确认后返回用户的身份信息,子系统B将用户信息写到session

ST(Service Ticket,服务票据):ST是用户访问某一个系统的凭证,由cas服务在用户通过认证后生成,为了保证安全性,ST具有使用一次即自动销毁的特点
TGT(Ticket Granting Ticket,票据授权票据):用户通过cas的身份认证,cas给用户颁发一个TGT,代表用户具有门户的通行证
TGC(Ticket Granting Cookie,票据授权cookie):是TGT的容器,存放于在用户浏览器;TGC是实现单点登录的关键所在,通过传递TGC,cas服务能够直接判断用户身份的合法性,避免用户重复登录,用户浏览器关闭,TGC即失效。

通过访问项目isupm组件,说明单点登录的跳转流程

访问isupm,用户未登录

输入用户名密码。登录成功,跳转到门户首页,并在浏览器设置了cookie

  • cookie: JSESSIONID=cF_Gfj2RueDzZJBn-SXbzUk1GI1BQezmIUGL5bbY; _languageType=zh_CN; portal.local=zh_CN; OPSMGRCASTGC=TGT-118-FH7kYNA1qBkWXz9zw9sDLguPN3cdcLNLPnEnqwx2APRYEHeT6J-cas; CASTGC=TGT-564-aweV71dfqBkldz9zI9oLtjEPNtuydcLiLadEnqwx2APILEINOcT-cas

访问isupm,用户已登录

再次访问isupm,用户已登录

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×