Single Sign On:多應用系統中,用戶**一次登錄**,即可訪問所有互信應用。解決:多系統賬號分散、密碼管理混亂、重複登錄體驗差、安全風險高(統計:用戶日均 16 分鐘花在認證、平均 21 個密碼、49% 記紙上、79 秒發生一次身份盜竊)。
類比頤和園「通票」:大門買票(認證中心登錄)→ 獲取通票 → 各景點驗票放行(應用驗證 Ticket)。流程:
Set-Cookie: SSO_ID=xxx; Domain=.example.com; Path=/; MaxAge=60000web.xml 配置 domainname(如 .sun.com)web.xml 配置 SSOServiceURL、SSOLoginPage 指向認證中心ConcurrentHashMap:accounts(用戶名→密碼)、SSOIDs(Ticket→用戶名)processRequest 分派四種 action:
handlerFromLogin(登錄驗證、簽發 Cookie、重定向回原 URL)authcookie → authCookie(驗證 Ticket 有效性)authuser → authNameAndPasswd(非 Web 客戶端直驗用戶名密碼)logout → 清理 SSOIDs、清除 CookieCookie Domain 限制同主域,跨域需:
1. 認證中心頁面輸出隱藏 iframe/form 自動提交 Ticket 到目標域
2. 或用 OAuth/CAS 等標準協議
服務間調用頻繁,統一身份認證體系能大幅簡化服務間安全握手,提升協作效率。