假设即浏览器为A,服务1记为S1,服务2记为S2,SSo认证中心记为C
1.当A已经成功登录S1,为什么A再登录S2时仍需要重定向到C而不是直接去C验证ticket是否有效?
ticket只能用一次,当服务1第一次认证成功之后就会生成一个会话id,维护该用户的登录状态,这个ticket就无效了
2.为什么不能用一个ticket去验证?
cookie有跨域的问题,ticket只能用一次,访问到就会失效,下次就是服务维护了一个session来判断。TGT是用于生成一个新的ST,而ST是提供给客户端用于验证后登录的Ticket,ST则必须是是根据TGT来生成,主要用于登录,并且当登录成功之后 ST 则会失效。
3.。当B访问一个新的服务时,没有ticket,但是有访问S1得到的属于域名C的TGC,拿着这个TGC访问域名C,验证TGC是否有效,若有效,C签发一个ST给B,并且携带S2的域名,然后B访问带有S2并且带有ST,然后再重定向到C并且携带