欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    單點登錄在現在的系統架構中廣泛存在,他將多個子系統的認證體系打通,實現了一個入口多處使用,而在架構單點登錄時,也會遇到一些小問題,在不同的應用環境中可以采用不同的單點登錄實現方案來滿足需求。我將以我所遇到的應用環境以及在其中所經歷的各個階段與大家分享,若有不足,希望各位不吝賜教。

    一、共享

    共享可謂是實現單點登錄最直接、最簡單的方式。將用戶認證信息保存于中,即以內存儲的值為用戶憑證,這在單個站點內使用是很正常也很容易實現的,而在用戶驗證、用戶信息管理與業務應用分離的場景下即會遇到單點登錄的問題,在應用體系簡單,子系統很少的情況下,可以考慮采用共享的方法來處理這個問題。

    這個架構我使用了基于Redis的共享方案。將存儲于Redis上,然后將整個系統的全局 設置于頂級域名上,這樣就能在各個子系統間共享。

    這個方案存在著嚴重的擴展性問題,首先,ASP.NET的存儲必須為對象,而存儲的結構是經過序列化后經過加密存儲的。并且當用戶訪問應用時,他首先做的就是將存儲容器里的所有內容全部取出,并且反序列化為對象。這就決定了他具有以下約束:

    中所涉及的類型必須是子系統中共同擁有的(即程序集、類型都需要一致),這導致的使用受到諸多限制;

    跨頂級域名的情況完全無法處理;

    二、基于的單點登錄

    這種單點登錄將用戶的身份標識信息簡化為存放于客戶端,當用戶登錄某個子系統時,將傳送到服務端,服務端根據構造用戶驗證信息,多用于C/S與B/S相結合的系統,流程如下:

    窯洞小廚 點單_單點登錄原理_中華聯合財產保險點單登錄

    由上圖可以看到,這套單點登錄依賴于的傳遞,其驗證的基礎在于的存儲以及發送。

    當用戶第一次登錄時,將用戶名密碼發送給驗證服務;

    驗證服務將用戶標識返回到客戶端;

    客戶端進行存儲;

    訪問子系統時,將發送到子系統;

    子系統將轉發到驗證服務;

    驗證服務將用戶認證信息返回給子系統;

    單點登錄原理_中華聯合財產保險點單登錄_窯洞小廚 點單

    子系統構建用戶驗證信息后將授權后的內容返回給客戶端。

    這套單點登錄驗證機制的主要問題在于他基于C/S架構下將用戶的存儲于客戶端,在子系統之間發送,而B/S模式下要做到這一點就顯得較為困難。為了處理這個問題我們將引出下一種方式,這種方式將解決B/S模式下的的存儲、傳遞問題。

    三、基于的存儲方案

    我們知道,的作用在于充當一個信息載體在端和端進行信息傳遞,而一般是以域名為分割的,例如與的是不能互相訪問的,但是子域名是可以訪問上級域名的的。即和是可以訪問下的的,于是就能將頂級域名的作為的載體。

    驗證步驟和上第二個方法非常相似:

    在提供驗證服務的站點里登錄;

    將寫入頂級域名里;

    窯洞小廚 點單_單點登錄原理_中華聯合財產保險點單登錄

    訪問子系統(里帶有)

    子系統取出通過并向驗證服務發送

    返回用戶認證信息

    返回授權后的內容

    在以上兩種方法中我們都可以看到通過解耦了共享方案中的類型等問題,并且構造用戶驗證信息將更靈活,子系統間的驗證是相互獨立的,但是在第三種方案里單點登錄原理,我們基于所有子系統都是同一個頂級域名的假設,而在實際生產環境里有多個域名是很正常的事情,那么就不得不考慮跨域問題究竟如何解決。

    四、B/S多域名環境下的單點登錄處理

    在多個頂級域名的情況下,我們將無法讓各個子系統的共享。處理B/S環境下的跨域問題,我們首先就應該想到JSONP的方案。

    單點登錄原理_窯洞小廚 點單_中華聯合財產保險點單登錄

    驗證步驟如下:

    用戶通過登錄子系統進行用戶登錄;

    用戶登錄子系統記錄了用戶的登錄狀態、等信息;

    用戶使用業務子系統;

    若用戶未登錄業務子系統則將用戶跳轉至用戶登錄子系統;

    用戶子系統通過JSONP接口將用戶傳給業務子系統;

    業務子系統通過調用驗證服務;

    驗證服務返回認證信息、業務子系統構造用戶登錄憑證;(此時用戶客戶端已經與子業務系統的驗證信息已經一一對應)

    單點登錄原理_中華聯合財產保險點單登錄_窯洞小廚 點單

    將用戶登錄結果返回用戶登錄子系統,若成功登錄則將用戶跳轉回業務子系統;

    將授權后的內容返回客戶端;

    五、安全問題

    經過以上步驟,跨域情況下的單點登錄問題已經可以得到解決。而在整個開發過程初期,我們采用用戶表中紀錄一個字段來保存用戶,而這個機制下很明顯存在一些安全性、擴展性問題。這個擴展性問題主要體現在一個方面:的安全性和用戶體驗的矛盾。

    整個單點登錄的機制決定了是會出現在客戶端的,所以需要有過期機制,假如用戶在一個終端登錄的話可以選擇在用戶每次登錄或者每次退出時刷新,而在多終端登錄的情況下就會出現矛盾:當一個終端刷新了之后其他終端將無法正常授權。而最終,我采用了單用戶多的解決方案。每次用戶通過用戶名/密碼登錄時,產生一個保存在Redis里,并且設定過期時間單點登錄原理,這樣多個終端登錄就會有多個與之對應,不再會存在一個失效所有終端驗證都失效的情況。

    歡迎加入我的知識星球,一起探討架構,交流源碼。加入方式,長按下方二維碼噢:

    已在知識星球更新源碼解析如下:

    最近更新《芋道 2.X 入門》系列,已經 20 余篇,覆蓋了 、Redis、、、分庫分表、讀寫分離、、、、性能測試等等內容。

    提供近2W 行代碼的 示例,以及超 4W 行代碼的電商微服務項目。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有