單點登入:single sign on,簡稱sso,sso使得在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。
cas框架:cas(central authentication service)是實現sso單點登入的框架。
網上搜的一張流程圖:
cas分為兩部分,乙個是cas server,另乙個是cas client。
cas client可以有多個,當使用者需要訪問受限(需要登入)url時,重定向到cas server中進行登入。
cas server是認證中心,用於多個**登入,票據認證,傳遞使用者資訊等功能
1.1使用者首次登入a系統:
1)、使用者訪問a系統,a系統去瀏覽器拿登入狀態id,發現未登入,然後拿票據,發現沒有票據,需要重定向到使用者中心。
2)、使用者認證中心獲取全域性會話id,如若無,則去使用者中心登入頁登入。
3)、使用者登入後,產生全域性會話id和票據,然後重定向到系統a,並附上ticket票據。
4)、系統a從url獲取票據資訊,然後去使用者中心驗證票據是否有效
5)、使用者中心驗證票據有效,把使用者資訊傳遞給系統a,系統a再展示到使用者瀏覽器中
1)、使用者訪問b系統,b系統去瀏覽器拿登入狀態id,發現未登入,然後拿票據,發現沒有票據,需要重定向到使用者中心。
2)、使用者認證中心獲取全域性會話id,存在,生成臨時驗證票據(驗證之後就會失效)。
3)、認證中心發放臨時票據(令牌),並攜帶該令牌重定向到系統b。
4)、系統b從url獲取票據資訊,然後去使用者中心驗證票據是否有效
5)、使用者中心驗證票據有效,把使用者資訊傳遞給系統b,系統b再展示到使用者瀏覽器中
1)、使用者到cas使用者中心登入後,使用者和認證中心之間建立起了全域性會話。當繼續訪問改**的時候,不可能每次都去使用者中心驗證登入狀態,這樣效率非常低下。
2)、於是就需要在系統和瀏覽器之間建立區域性對話,如果區域性對話存在,則使用者為登入狀態。區域性會話依附於全域性會話存在,全域性會話消失,區域性會話必須消失。
3)、使用者訪問應用時,首先判斷區域性會話是否存在,如存在,即認為是登入狀態,無需再到認證中心去判斷。如不存在,就重定向到認證中心判斷全域性會話是否存在,如存在,則通知該系統,該系統與客戶端就建立起它們之間區域性會話,下次請求該應用,就不去認證中心驗證了。
使用者在乙個系統登出了,在其他系統也應該是登出狀態。所以在結束本地區域性會話的同時需要通知使用者中心使用者通過該系統退出了。
使用者中心接到該系統發出的登出請求之後,結束全域性對話,同時通知所有子系統將他們的區域性對話銷毀,這樣訪問其他系統時也會使登出狀態了。
整個流程如下:
1)、系統a發起logout請求
2)、系統a刪除本地cookie或seesion,結束區域性對話,同時通知使用者中心
3)、系統a返回瀏覽器已登出
4)、認證中心通知所有子系統使用者已登出。
}5.2 中介軟體logintest.js,部分路由如果未登入就要走登入介面
module.exports = options =>
await next()}}
CAS實現SSO 單點登入
cas分為兩部分,cas server和cas client 假設我們現在有應用系統a 應用系統b cas認證系統 首先,我們來分析下單web應用系統登入登出的實現機理。web系統登入登出功能,通常屬於系統安全管理模組的一部分。如上篇所說,登入,意味著使用者與系統之間的一次會話開始,登出,意味著本次...
CAS實現SSO單點登入詳解
一.基本概念 1.sso 單點登入 single sign on 是目前比較流行的服務於企業多系統整合的解決方案之一,使得在多個系統中,使用者只需要登入 退出一次就可以訪問 退出所有相互信任的應用系統。2.cas 認證中心 central authentication service 是sso的一種...
cas單點登入 SSO 的實現原理
單點登入sso single sign on 說得簡單點就是在乙個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型 裡使用得非常頻繁,例如像阿里巴巴這樣的 在 的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個...