CAS 的安全性从 v1 到 v3 ,都很依赖于 SSL ,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的传输安全性。
TGC 安全性
对于一个 CAS 用户来说,最重要是要保护它的 TGC ,如果 TGC 不慎被 CAS Server 以外的实体获得, Hacker 能够找到该 TGC ,然后冒充 CAS 用户访问所有授权资源。
TGC 是 CAS Server 通过 SSL 方式发送给终端用户,因此,要截取 TGC 难度非常大,从而确保CAS 的安全性。但 CAS 的传输安全性仅仅依赖于 SSL 。
TGC 面临的风险 主要并非传输窃取,而是存活周期内( logout 前)被使用(如:离开了电脑)或窃取。
TGC 有自己的存活周期。可以在 web.xml 中,通过 grantingTimeout 来设置 CAS TGC 存活周期的参数,参数默认是 120 分钟,在合适的范围内设置最小值,太短,会影响 SSO 体验,太长,会增加安全性风险。
ST 安全性
ST ( Service Ticket )是通过 Http 传送的,网络中的其他人可以 Sniffer 到其他人的 Ticket 。CAS 协议从几个方面让 Service Ticket 变得更加安全:
1) ST 只能使用一次: CAS 协议规定,无论 ST 验证是否成功, CAS Server 都会将服务端的缓存中清除该 Ticket ,从而可以确保一个 Service Ticket 不被使用两次;
2) ST 在一段时间内失效:假设用户拿到 ST 之后,他请求服务的过程又被中断了, ST 就被空置了,事实上,此时 TS 仍然有效。 CAS 规定 Service Ticket 只能存活一定的时间,然后 CAS Server 会让它失效。可通过在 web.xml 中配置参数,让 ST 在多少秒内失效。
3) ST 是基于随机数生成的。