一、單點登錄概述
單點登錄的英文名稱為Single Sign-On,簡寫為SSO,它是一個用戶認證的過程,允許用戶一次性進行認證之后,就訪問系統中不同的應用;而不需要訪問每個應用時,都重新輸入密碼。IBM對SSO有一個形象的解釋“單點登錄、全網漫游”。
SSO將一個企業內部所有域中的用戶登錄和用戶帳號管理集中到一起,SSO的好處顯而易見:
1. 減少用戶在不同系統中登錄耗費的時間,減少用戶登錄出錯的可能性
2. 實現安全的同時避免了處理和保存多套系統用戶的認證信息
3. 減少了系統管理員增加、刪除用戶和修改用戶權限的時間
4. 增加了安全性:系統管理員有了更好的方法管理用戶,包括可以通過直接禁止和刪除用戶來取消該用戶對所有系統資源的訪問權限
缺點:
1.不利於重構
因為涉及到的系統很多,要重構必須要兼容所有的系統,可能很耗時。
2. 無人看守桌面
因為只需要登錄一次,所有的授權的應用系統都可以訪問,可能導致一些很重要的信息泄露
二、單點登錄的實現方案
1.流程圖
a、詞匯解釋
1.Service Ticket:進入每個客戶端的憑證(是唯一不重復的)。
2.Ticket Granted Cookie:全局唯一憑證(以cookie的形式存儲),之所以能從一個系統跳轉到列一個系統不用再次登錄,全憑它。
b、流程說明
①用戶通過終端訪問客戶端。
②客戶端帶着重定向地址(redirect_uri:為各自客戶端當前頁面地址[需要編碼,防止有特殊字符])到驗證中心登錄頁驗證(沒有登錄情況下)。
③驗證成功生成Ticket Granted Cookie和Service Tikcet並存儲(為后面驗證做准備)。
④同時通過url傳參的方式(redirect_uri?ticket=Service Tikcet)重定向到客戶端並為終端游覽器設置Ticket Granted Cookie。
⑤客戶端獲得了Service Ticket,然后到驗證中心驗證。(需要客戶端自己實現)
⑥驗證中心到憑證存儲服務器查詢獲取Service Ticket
⑦驗證成功返回用戶手機號並生成用戶Session, 下次訪問本系統判斷Session就可以了,不用再去驗證中心了。為了redirect_uri上的token不讓用戶看到(不要出現在地址欄中),各個客戶端驗證成功后去掉ticket=Service Tikcet參數再次重定向本系統。(需要客戶端自己實現)
⑧用戶成功進入系統;進入其他系統”驗證中心”通過Ticket Granted Cookie為系統生成Service Tikcet,所以用戶不需要再次登錄了。