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