CAS客戶端認證流程

2021-09-24 10:42:14 字數 2804 閱讀 7299

step 1:瀏覽器向cas客戶端發起登陸請求,cas客戶端生成「登陸url」,並把瀏覽器重定向到該url 

登陸url: https://$:$/cas-server/login?service=$ 

其中 cas-server-host: cas認證伺服器的網域名稱 

cas-server-port: cas認證伺服器的ip 

client-service-url: 用於登陸成功後,瀏覽器重定向的url

step 2: 瀏覽器向「登陸url」發起重定向請求,cas服務端建立會話,把tgt(ticket granting ticket)放入cookie,並返回登陸頁面

step 3:使用者輸入使用者名稱和密碼,然後提交登陸表單. cas服務端通過登陸驗證後,會生成乙個st(service ticket,簡稱ticket), 然後把瀏覽器重定向到$?ticket=$

step 4:瀏覽器重定向到$?ticket=$發起重定向請求

step 5: cas客戶端取出ticket,生成「ticket驗證url」,然後向"ticket驗證url"發起http get請求 

「ticket驗證url」: http://$:$/cas-server/servicevalidate?ticket=$&service=$

step 6: 如果cas伺服器通過ticket的有效性檢查,那麼會返回類似如下格式的xml片段

view source

print?

1<cas:serviceresponsexmlns:cas=''>

2<cas:authenticationsuccess>

3<cas:user>aaaa

4

5

其中aaaa是登陸的使用者名稱 

否則返回:

view source

print?

1<cas:serviceresponsexmlns:cas=''>

2<cas:authenticationfailurecode='***'>

3yyy

4

5

其中: 至此cas的登陸流程結束

登陸成功後,cas客戶端應該在會話中儲存登陸狀態資訊。cas伺服器通常在step 6會建立ticket和$的對映關係,以便在登出時通知其業務系統清除快取中的狀態資訊

瀏覽器或cas客戶端向「登出url」發起get請求: 

「登出url」: https://$:$/cas-server/logout 

cas伺服器銷毀tgt和st,並向所有已登陸的業務系統發出登出通知請求

請求方法:post

請求url: $

請求正文:

view source

print?

1logoutrequest=<samlp:logoutrequestxmlns:samlp="urn:oasis:names:tc:saml:2.0:protocol"id="#lr_ticket_id#"

2version="2.0"issueinstant="#current_datetime#">

3<saml:nameidxmlns:saml="urn:oasis:names:tc:saml:2.0:assertion">@not_used@

4<samlp:sessionindex>#st#

5

*其中

posted @

2019-06-03 09:10

你要 閱讀(

...)

編輯收藏

關於CAS客戶端部署實現

最近專案組需要進行單點登入功能的實現,引用的是cas框架。這裡就簡單整理一下關於cas框架的客戶端實現,相對而言還是比較簡單的。1.在web.xml中新增cas框架的四大過濾器。2.需要修改原始登入servlet,將登入請求 或重定向到casfilter過濾器下的url位址,通過過濾 到單點登入介面...

CAS 客戶端獲取Credentials額外資訊

服務端的配置 1 在deployercontext.xml中加上attributerepository 2 配置,這裡配置需要從資料庫讀取的屬性,這裡參考了這篇 3 另外由於我用的是http協議,所以還需要配置serviceregistrydao,讓attributerepository返回資訊 4...

CAS客戶端的拆離

一般來說都是去整合或者整合cas,但是今天記錄的確是反著來的,即把cas從現有系統中給剔除掉,不用它了。遇到乙個場景是這樣子的 需要將原有的cas認證體系去除掉 其他團隊做的乙個門戶系統 換做乙個另乙個簡易的認證中心。為了保持系統的擴充套件性,需要在盡量不修改原來的 的基礎上完成遷移。要盡量少的改動...