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:serviceresponse
xmlns:cas
=
''
>
2
<
cas:authenticationsuccess
>
3
<
cas:user
>aaaa
4
5
其中aaaa是登陸的使用者名稱
否則返回:
view source
print?
1
<
cas:serviceresponse
xmlns:cas
=
''
>
2
<
cas:authenticationfailure
code
=
'***'
>
3
yyy
4
5
其中: 至此cas的登陸流程結束
登陸成功後,cas客戶端應該在會話中儲存登陸狀態資訊。cas伺服器通常在step 6會建立ticket和$的對映關係,以便在登出時通知其業務系統清除快取中的狀態資訊
瀏覽器或cas客戶端向「登出url」發起get請求:
「登出url」: https://$:$/cas-server/logout
cas伺服器銷毀tgt和st,並向所有已登陸的業務系統發出登出通知請求
請求方法:post
請求url: $
請求正文:
view source
print?
1
logoutrequest=<
samlp:logoutrequest
xmlns:samlp
=
"urn:oasis:names:tc:saml:2.0:protocol"
id
=
"#lr_ticket_id#"
2
version
=
"2.0"
issueinstant
=
"#current_datetime#"
>
3
<
saml:nameid
xmlns: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認證體系去除掉 其他團隊做的乙個門戶系統 換做乙個另乙個簡易的認證中心。為了保持系統的擴充套件性,需要在盡量不修改原來的 的基礎上完成遷移。要盡量少的改動...