单点登录cas功能涉及三个角色:CAS client,CAS server,<em>浏览器</em>。它们的关系如下图1所示。前端向系统访问资源,系统里已经整合了cas client(cas 客户端),这个客户端和cas server是一套的。Cas client判断用户是否登
2021-05-27 15:01:41
一 簡介
前篇講到了springboot整合cas單點登入功能,但是在前後端分離的項目中,集合單點登入功能就遇到棘手的重定向問題。所謂前後端分離,也就是前端和後端是兩個獨立的系統,各自部署,前端通過restful api請求後端,後端在controler模組裡將前端請求的內容返回。加入cas單點登入功能後,cas有個跳轉功能,但是前端vue不支援重定向功能302跳轉,所以如何解決呢。
二 cas原理
單點登入cas功能涉及三個角色:CAS client,CAS server,瀏覽器。
它們的關係如下圖1所示。
前端向系統訪問資源,系統裡已經整合了cas client(cas 客戶端),這個客戶端和cas server是一套的。Cas client判斷使用者是否登入,即有沒有攜帶ticket,否則要跳轉到cas server登入。Cas server登入頁面填入正確的使用者名和密碼,使用者在 CAS server認證成功後,CAS 生成 cookie(叫TGC),寫入瀏覽器,同時生成一個 TGT 物件,放入自己的快取,TGT 物件的 ID 就是 cookie 的值(叫jsessionId)。 當 再次請求到來時,如果傳過來的有 CAS 生成的 cookie,則 CAS 以此 cookie 值為 key 查詢快取中有無 TGT,如果有,說明使用者之前登入過,如果沒有,則使用者需要重新登入。Cas server重定向到資源,此時攜帶TGT,CAS client拿這個TGT到cas server檢查是否合法,若合法則將資源資訊返回給前端展示。
三 微服務整合cas過程
使用者沒登入過,發起請求,判斷未登入,跳轉到cas server伺服器登入,輸入正確的使用者名和密碼,登入成功後,地址後面有service=請求資源,跳轉到請求資源網址。
2、登入過後,請求其他資源,由於剛才已經登入過,再次請求攜帶了sessionid去請求,cas驗證通過,准予放行。
3、cas server伺服器日誌情況
四 請求過程
前端發起請求Cas client攔截,判斷使用者未登入,重定向到cas server的登入頁面,後面帶參數service=controller一個服務,用來作重定向,同時也要攜帶之前的請求資源地址Cas server登入成功後,根據service的網址請求後端controller網址,在controller裡返回請求資源地址和cas server返回的jsessionId前端獲取到jsession,將它儲存在cookie裡,後面每次請求都攜帶該jsessionId請求後端資源五 遇到問題集錦
前後端分離,cas返回跳轉302,前端無法獲取到跳轉地址,導致不會跳轉到cas server登入介面
解決方案:
下載java decompiler反編譯工具,將cas的AuthenticationFilter.class拉到反編譯工具裡檢視源碼。解決方案看圖說明。修改完後,重新啟動項目,重新請求資源,這時前端就可以收到資訊,返回資訊格式前後端溝通好即可。
2、使用者登入成功後,攜帶ticket請求後端資源,發現ticket目標不對,如圖所示,還沒登入時,前後請求的資源有一點點不對,ticket就判斷不通過。後端程式碼報ticketvalidationexception票根不符合目標服務的錯誤資訊。
3、未認證授權的服務問題
訪問客戶端資源,還要將訪問的服務註冊到cas伺服器才可以訪問,我們之前已經註冊過。下圖16正則表示式表示所有網址都可以訪問,這時比較籠統的配置,如果比較嚴格,註冊具體域名資訊等等,也是類似的方法。檔名稱以 「服務名-id」命名,id就是檔案裡的id。serviceId這行寫註冊的服務的過濾規則,採用正則表示式。
六 總結
本文講述了前後端分離整合cas單點登入功能,如何修改源碼等,若大家還有疑問, 關注"金領虎少兒學習"留言疑問,我們看到會及時回答。
相關文章
单点登录cas功能涉及三个角色:CAS client,CAS server,<em>浏览器</em>。它们的关系如下图1所示。前端向系统访问资源,系统里已经整合了cas client(cas 客户端),这个客户端和cas server是一套的。Cas client判断用户是否登
2021-05-27 15:01:41
商家既可以通过写一个程序来提供服务,也可以通过搭建一个网站来提供服务。而进入了移动互联网时代,用户访问网络服务的终端由电脑变成了手机。服务被聚合在app中,用户通过安装使用app来享受商家提供的服务。可是通过<em>
2021-05-27 15:01:28
鸿蒙OS2.0(HarmonyOS2.0)系统将在6月2日面向全球正式发布,届时华为手机用户将可分批次选择一键从<em>安卓</em>+EMUI升级为鸿蒙系统,这是期待鸿蒙系统已久的广大手机用户的好消息。近几个月来,踊跃参加鸿蒙系统各阶段测
2021-05-27 15:01:20
第一次连接需要简单走几道工序,首先,在手机上安装向日葵APP,注册好帐号并登入,然后开始手机与向日葵UUPro进行蓝牙连接,并在APP上点击确认,到这里你已经完成了被控制手机端的所有设置,接下来的事就简单了,你可以在任意PC、<em
2021-05-27 15:01:12
站在个人立场,对于鸿蒙抱有巨大的期待,毕竟国产手机品牌中能有一个自己研发的开源操作系统,甚至可以和谷歌<em>安卓</em>、苹果iOS抗衡,这是多么自豪的事情。那些反对华为鸿蒙的人,我只能说他们“格局小了”!实际上关于国产
2021-05-27 15:01:10
不过萝卜青菜各有所爱,不知道你觉得酷派、OPPO、vivo、一加、荣耀、联想这些国产手机品牌,谁是你心目中2021的<em>安卓</em>“机皇”? 举报/反馈 发表评论 发表 作者最新文章 酷派回归了!或成OPPO、vivo最大劲敌,202
2021-05-27 15:01:03