摘要:本章主要講解的是同域下單點登錄分析。若登錄失敗,則返回原來的登錄頁面,并攜帶原來的,將原始的作為表單的隱藏屬性。若沒有,則證明該可能已經失效或是偽造的,則向客戶端返回空字符串,否則返回查詢到的信息。
本項目主要講解的是單點登錄系統的原理及其實現。
相關代碼github鏈接。
本章主要講解的是同域下單點登錄分析。
流程圖雖然看著復雜,但大家不要被嚇到啦^ _ ^,請大家參照著流程路,聽我下面細細道來~~
在github的代碼中,我建立了三個項目,分別是服務端SSOServer、客戶端SSOClient、以及兩個集成了客戶端的業務系統app1與aPP2。
將SSOServer,app1,app2啟動后,開始SSO流程分析。
未登錄訪問業務系統app1的index頁面:請求被客戶端的Filter攔截。
由于沒有token,客戶端Filter控制其進行登錄操作,并將原始的URL作為請求的參數。
進入服務端的UserLoginServlet進行登錄操作。進入登錄頁時,獲取URL中的參數——原始的origRUL,將其作為request對象的屬性,方便后人獲取,并且跳轉到服務端的登錄頁面。
用戶提交表單,服務端獲取表單中信息后,到數據庫中進行查詢。若登錄失敗,則返回原來的登錄頁面,并攜帶原來的URL,將原始的URL作為表單的隱藏屬性。
若登錄成功則:
1.生成token。
2.將token與其對應的user放到全局唯一數據結構中,方便所有人進行獲取。
3.給該用戶設置一個cookie,值為token,用戶在下次訪問的時候就會攜帶此cookie,服務端也就可以通過該cookie對其身份進行驗證。
4.判斷原始URL是否為空,若不為空則跳轉到原始URL頁面,否則跳轉到成功登錄頁面。
在用戶要跳轉到原始URL頁面的時候,被客戶端的Filter攔截,進行有無token的驗證,由于經過登錄操作在cookie中已經生成了token,故Filter發送Http通信請求服務端進行token有效性的驗證,并將token作為請求參數。
服務端的TokenValidateServlet獲取參數中的token后,到全局唯一數據結構中查找有無該token對應的user。若沒有,則證明該token可能已經失效或是偽造的,則向客戶端返回空字符串,否則返回查詢到的user信息。
攔截器接收到服務端的返回信息,若為空字符串則返回原始登錄頁面,并攜帶原始URL,否則通過傳來的用戶信息,對user對象進行還原,方便下個人獲取,攔截操作結束,成功進入了業務系統的index頁面,并將request對象攜帶的user信息顯示出來。
在通過了客戶端的攔截器之后,業務系統還可以自定義攔截器,從而根據用戶信息獲取與本系統相關的用戶業務信息,或者是對用戶的權限進行進一步的驗證,如:"豬豬"不可訪問index頁面等QAQ。
服務端從request對象的cookie中獲取token的值,將這個token從全局數據結構中移除,并且將用戶保存有該token的cookie設置為無效的。
關于代碼部分,我將會在下一章節中進行詳細解釋~~~
大家多多關照!^ _ ^
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73605.html
摘要:不同域名不同端口不同協議,只要符合其中之一都算跨域請求同域當請求的符合域名端口協議都相同的時候,就是同域請求同域策略是瀏覽器內部實現的一種安全機制。 cookie如何設置?如何獲取? php中向瀏覽器設置 cookie setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);注意:cookie只可以存字符串類型數據,而且在...
摘要:時間年月日星期三說明本文部分內容均來自慕課網。慕課網教學示例源碼無個人學習源碼第一章概述課程介紹及介紹課程目標認識并理解及其應用,并能根據其實現原理自行實現。 時間:2017年3月22日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:https://github.com/zccodere/s... 第一章:概述 1-...
摘要:前言山竹影響了我一整夜的睡眠,剛好住在廣東這邊,于是頭腦發昏的我,出了今天的推文,還需指正,請一針見血。兩個應用系統,同域跨域單點登錄實現。 前言 山竹影響了我一整夜的睡眠,剛好住在廣東這邊,于是頭腦發昏的我,出了今天的推文,還需指正,請一針見血。 剛好在了解公司開發平臺的權限,于是畫了張SSO單點登錄的流程圖,起床后寫了篇MYSQL的手記后就開始敲代碼了,終于在3小時后完成了。 兩個...
摘要:動態生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態化,用隨機數作為參數,只能秒殺開始的時候才生成。該文件不被緩存的做法隨機數。淺談秒殺系統架構設計如何只允許,第一個提交的單進入訂單系統。未超過秒殺商品總數,提交到子訂單系統。 秒殺是電子商務網站常見的一種營銷手段。 原則 不要整個系統宕機。 即使系統故障,也不要將錯誤數據展示出來。 盡量保持公平公正。 實現效果 秒殺開始前,...
閱讀 3216·2021-11-23 09:51
閱讀 3558·2021-11-09 09:46
閱讀 3655·2021-11-09 09:45
閱讀 2938·2019-08-29 17:31
閱讀 1860·2019-08-26 13:39
閱讀 2715·2019-08-26 12:12
閱讀 3614·2019-08-26 12:08
閱讀 2235·2019-08-26 11:31