SSO CAS 單點系列

在多系統應用羣中,使用,例如,用戶帳戶管理,用戶應該有一個統一的帳戶,不該該讓用戶在每一個子系統分別註冊 登錄再分別登出。這就是咱們所說的單點登錄問題,即SSO;php

SSO問題,時大中型web應用常常碰到的問題,是java架構師須要掌握的必備技能之一,中高級以上Web工程師都應該對它有所瞭解;java

http是一個無狀態協議,在此之上實現會話管理,就須要額外的手段,1 帶請求參數,侵入性較大,通常不使用,2 使用cookie,服務器經過HTTP響應建立好cookie後,瀏覽器就接收下來,下次請求會自動攜帶上返回給服務器,應用這個機制,咱們能夠實現應用層的登錄會話狀態管理。web

例如咱們能夠把登錄狀態保存哎cookie中,這是客戶端保存方式。會話信息在客戶端,須要維護其安全性、徐婭加密文件、攜帶量變大,這樣會影響http的處理效率,同時cookie的數據攜帶量也有必定的限制。瀏覽器

比較好的方式是服務器端的保存,cookie只保存會話信息的句柄,即在登錄成功後,服務器端能夠建立一個惟一登錄會話,並把會話標識ID經過cookie返回給瀏覽器,瀏覽器下次訪問時會自動帶上這個ID,服務器根據ID便可判斷是此會話中的請求,從而判斷出是該用戶,這種操做直到登出銷燬會話爲止。安全

咱們使用的web應用服務器通常都會提供這種會話基礎訪問,如Tomcat的Session機制。也就是說,應用開發人員沒必要利用cookie親自代碼實現會話的建立 維護 和銷燬等整個生命週期管理,這些內容服務器Seeion已經提供好了,咱們只須要正確使用便可。服務器

1 大中型web應用基本都是多系統組成是應用羣,SSO是必須面對的基本問題。cookie

2 Cookie有做用域限制,頂級域名Cookie不能共享,故登錄會話不能共享。架構

3 直接改造各子系統共享Session,通用性靈活性不強,或對原系統侵入性大,不是解決SSO根本辦法。分佈式

來自:https://www.imooc.com/article/3555#工具

 

 

當用戶訪問子系統須要登陸時,咱們把它引到認證中心,讓用戶到認證中心去登陸認證,認證經過後返回並告知系統用戶已登陸。當用戶再訪問另外一系統應用時,咱們一樣引導到認證中心,發現已經登陸過,即返回並告知該用戶已登陸

1 登錄屬於系統安全管理模塊一部分,涉及認證 創建會話 會話狀態判斷 取消會話等操做。

2 剝離各系統認證功能,創建統一獨立認證服務中心,是解決SSO問題的正確方法。

3 因爲是分佈式,處理SSO須要解決認證消息傳遞問題、登錄狀態判斷問題、登出信息傳遞問題,保證各應用系統與認證中心之間有效通訊。

來自:https://www.imooc.com/article/3558

1 臨時令牌只能使用一次,不呢個長期存在,可使用Redis來實現

2 全局會話和本地會話能夠利用web服務器Session,但咱們必須實現根據SeeionId查找seesion的功能。

3 服務器端之間HTTP協議方式的通訊,可使用HttpClient工具模擬瀏覽器實現。

來自:https://www.imooc.com/article/3564

1 CAS是中央認證服務的簡稱。目前已成爲影響最大、普遍使用的、基於java實現的、開源SSO解決方案

2 CAS分爲CAS Server認證中心和CAS Client應用系統鏈接組件,CAS Client支持java php .NET等多種語言開發系統

3 CAS Server是java Web應用,可部署在Tomcat中。CAS Client是鏈接組件,集成在須要單點登錄的各應用系統中,鑑於登錄安全性,實際應用中使用https協議,爲調試方便,可修改成支持http。

來自:https://www.imooc.com/article/3576

相關文章
相關標籤/搜索