时序流程图
需要注意的几点:
1.TGT(Ticket Granting Ticket):CAS 生成一个唯一的 TGT,通常是一个随机且不可预测的字符串。通常以 Cookie 形式发送给客户端。是多次有效,会在cookie中保持较长时间。当用户访问任何新系统时,只需使用浏览器携带的 TGT自动完成登录。
2.Ticket: 一次性有效。每次业务系统用它到CAS校验过后,即失效。每个受保护服务需要一个新的 ST,但可以自动生成。
TCT保持在cookie中安全隐患。
-
Cookie 被窃取(Session Hijacking)
-
如果 TGT Cookie 被恶意用户窃取(如 XSS 攻击、流量监听),攻击者可冒充合法用户,进行未授权访问。
-
-
Cookie 篡改(Session Fixation)
-
如果未设置正确的 Cookie 保护属性,攻击者可能通过固定会话或修改 Cookie 值,执行会话劫持。
-
-
跨站点请求伪造(CSRF 攻击)
-
如果 TGT 未严格绑定到用户身份,攻击者可能利用用户已登录的状态,执行恶意操作。
-
如何增强 TGT 安全性?
1. 设置 Secure + HttpOnly
-
Secure:仅允许在 HTTPS 连接中传输 Cookie,防止明文传输被窃听。
-
HttpOnly:禁止 JavaScript 访问 Cookie,防止 XSS 窃取。
2. 限制 Cookie 范围 (SameSite 属性)
-
SameSite=Strict:禁止跨站使用 Cookie,有效防御 CSRF 攻击。
-
SameSite=Lax:对同站子域名允许,但限制跨域使用,适用于多子系统场景。
3. 绑定客户端信息
确保 TGT 只对特定客户端有效,防止 Cookie 在其他设备上滥用:
-
绑定 IP 地址(适用于固定 IP 网络)。
-
绑定 浏览器指纹(如 User-Agent、设备特征等)。
6. 使用双重认证 (MFA)
在敏感操作(如修改密码、访问支付系统)启用 多因素认证 (MFA),即使 TGT 被窃取,仍需要额外验证。如以下几种MFA的方式。可以有效保护敏感操作的安全性
-
OTP(一次性密码,如 Google Authenticator)
-
SMS(短信验证码)
-
FIDO2(硬件令牌)