把一个TGT创建完成以后,就需要将这个TGT保存起来。
注解:所有的注册票据,都需要写入DefaultTiketRegistry HashMap cache中,系统创建了一个线程安全的ConcurrentHashMap来存储。
3.最后需要将这个创建的TGT id 返回。放入Spring RequestScope中。
4.通过org.jasig.cas.web.flow.SendTicketGrantingTicketAction保存新的TGT,并且删除旧的TGT
a) 保存TGT到CAS Server Cookie中
b) 如果以前从Cookie中获取的TGT不为空,并且与刚创建的不相等,就需要destroyTicketGrantingTicket 根据一个TGT的值。当然,删除时也需要验证在ticketRegistry中是否存在
6. 保存完成后需要重新创建ST,一般就是通过验证TGT是否存在(Cookie与cache)再new 一次ServiceTicket
org.jasig.cas.web.flow.GenerateServiceTicketAction |
如何验证?
首先获得serviceTicketId,根据ST创建一个ServiceTicket
如果ServiceTicket为空则直接抛出异常。
验证ServiceTicket是否有效,通过每个票据对象中的Policy。