手把手教你可復用的SSO組件設計(設計篇)

周末陪女朋友去了,沒寫,告罪,上班后急忙補上。

這里說到了可復用得設計,所謂可復用就是指的,引入Dll,改改配置就能使用,而不是打開源代碼東改改西改改再來調試調試最后OK。我們這里盡量提高抽象層次減少系統耦合。

首先系統需要一個中心認證端,多個客戶端構成。所以需要一個SSO的模塊和一個PSO的模塊,這兩個模塊都由工具類和HttpModule組成

image%7B0%7D_thumb.png

image%7B0%7D%5B3%5D.png

這里SSO的Keeper類和PSO的PSOClient類都是HttpModule。

Keeper在配置中設置一個URL,它只監聽對這個URL的請求,就是用來處理PSO向SSO端查詢SSOToken是否存在的請求的。它包含了SSO端的邏輯

PSOClient在配置中設置一個例外列表,它監聽例外列表外的所有請求,判斷是否有PSOToken,或者URL里是否包含SSOToken,它包括了整個PSO端的邏輯

TicketCreator是一個工具類,用于用戶登錄成功后調用來產生SSOToken的。

這兩個組件包括了所有的邏輯,但是有一些公共的東西我們需要抽象出來(不然就成了意大利面條式的代碼了:})

image%7B0%7D%5B5%5D.png

這個項目封裝了整個3DES加密解密,密鑰生成的邏輯,.NET的加密解密名字空間里的類用法很惡心,太惡心了。

Encrypter加密,Decrypter解密,KeyMaker密鑰生成,Common是公共的字符串操作類

image%7B0%7D%5B7%5D.png

這個項目包含了所有公共數據結構和操作的基本邏輯還有密鑰的獲取更新的功能,為了擺脫對數據庫的依賴,這里我們使用了文件的方式,其實老實說效率不會低。

KeyManager是密鑰管理的操作的類

PSORequest是PSO向SSO發送的SSOToken查詢請求的結構及其操作的類

SSOResponse是SSO驗證登陸成功后向PSO發送的包含SSOToken的請求的結構及其操作的類

Ticket是操作Cookie票據的類

?

實用的方法:

引入DLL到SSO站點

image%7B0%7D%5B11%5D.png

修改Web.Config

image%7B0%7D_thumb%5B7%5D.png

添加自定義配置和加載HttpModule的模塊

這樣子SSO站點就配置好了

引入DLL到PSO站點

image%7B0%7D%5B19%5D.png

修改Web.Config

image%7B0%7D_thumb%5B6%5D.png

添加自定義配置和加載HttpModule的模塊

ok

現在用KeyManager生成一個Key和IV的文件,之后就可以使用了

看看,是不是一句代碼都沒改,也不用重新編譯阿:}

?

下一章放出主要代碼和說明

?

To be continue......

轉載于:https://www.cnblogs.com/Alexander-Lee/archive/2007/01/29/633595.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277106.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277106.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277106.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Object類和常用的API

第一章Object類 1.1 概述 1),Object 類是Java語言所有“引用類型”的父類,括我們自定義的類、類庫中的類,數組,集合,字符串。 2),所有的的引用類型都從Object類繼承了一些方法: 如,1).toString() 2).equal…

前端能力劃分

前端學習學的是什么,在不同的階段我思考這個問題。 最近的結論是:前端學習要學的是前端的三大能力。工程能力,架構能力,開發能力。 工程能力 工程能力的范疇我認為涵蓋了項目模板的自動化生成、項目的自動化編譯和構建。 當然傳統…

英語學習網址

英文寫作網 ( www.4ewriting.com )提供英文寫作的各種相關技巧,主要內容包括寫作語法文法、應用寫作、考試作文、寫作范文、背景文化 佳作欣賞、原創發表、英文blog、英語筆友、名師指導、寫作論壇等。 1. 英語學習:英語學習頻道(…

Anaconda+vscode+pytorch環境搭建

1、安裝Anaconda Anaconda指的是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。在官網上下載https://www.anaconda.com/distribution/,因為服務器在國外會很慢,建議從清華鏡像https://mirrors.tuna.tsinghua.ed…

git learn

$ git config --global user.name "Your Name" $ git config --global user.email "emailexample.com"因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人…

C#.NET 中的類型轉換

C# 出來也有些日子了,最近由于編程的需要,對 C# 的類型轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值類型間相互轉換、字符的 ASCII 碼和 Unicode 碼、數值字符串和數值之間的轉換、字符串和字符數組/字節數組之間的轉換、各種數值…

AngularJS的學習--$on、$emit和$broadcast的使用

來源:http://www.cnblogs.com/CraryPrimitiveMan/p/3679552.html AngularJS中的作用域有一個非常有層次和嵌套分明的結構。其中它們都有一個主要的$rootScope(也就說對應的Angular應用或者ng-app),然后其他所有的作用域部分都是繼承自這個$rootScope的&a…

17、【 商品管理模塊開發】——后臺商品圖片的springmvc和富文本上傳以及ftp文件服務器的開發...

1、FTP文件服務器的搭建: 軟件下載:ftpserver; image.png瀏覽器訪問:ftp://127.0.0.1/image.png點擊任意一個文件,就可以看到我們圖片啦,前提是前面指定的目錄里面有圖片文件~ image.png2、接口編寫&#x…

我們常說……

從過完元旦到現在,乖乖在公司辦公的時間很少,好多時候都是在外地,或者是在路上、車上。有n多次,乖乖一天至少坐6個小時的車,回到家里都是帶著一身的疲憊,雖然他并不表現出來,但是因為長時間坐車…

那些油管上高質量的學習編程的頻道 之一

國內確實有很多不錯的學習編程的網站或者個人博客,但是對于初學者,往往更希望獲得那種引導性的教學:即一步一步的教你跟著操作的教學。這種教學最好的方式當然就是視頻了。畢竟在Apple Podcast上超火爆的斯坦福教授iOS開發的課程也是這種形式…

SQL Server 2005 Express附加(Attach)的數據庫為“只讀”的解決方法

我的操作系統為Windows 2003 Server , 文件系統NTFS, 在SQL Server 2005 Express 上附加(Attach)從另外一臺電腦Copy過來的數據庫后,數據庫為“只讀”。如下圖: 解決辦法: 打開 SQL Server Configuration Manager, 打開SQL Server SQLEXPRESS…

[導入]blog年終小結

1. 2006-11-30 注冊了本域名thws.cn,喜歡的thw.com被注冊了,只好退而就其次了;2. 12-20在alexa上登陸站點,綜合排名從起初490多萬上升到現在的590327,下期566,880;3. 2007-1-11適逢google PR更新,PR值從0變…

Maven學習筆記(2) --mvn archetype:create 說明

前面一篇相對比較簡單。 看完前面的內容我們會來到實戰部分,也就是創建一個簡單的項目 1 mvn archetype:create -DgroupIdorg.sonatype.mavenbook.ch03 \ 2 -DartifactIdsimple \ 3 -DpackageNameorg.sonatype.mavenbook 于是我們得到了步入Maven領域的第一份打擊 真…

UI設計:C4D作品案例分享

中文名4D電影,外文名CINEMA 4D,研發公司為德國Maxon Computer,特點為極高的運算速度和強大的渲染插件,使用在電影《毀滅戰士》、《阿凡達》中,獲得貿易展中最佳產品’的稱號,前身為FastRay。CINEMA 4D擁有快…

又是一個人的情人節

又是一個人的情人節 上午送完弟弟返鄉的車,回家的心情也越來越迫切,很想立刻回到家里,和老爸老媽嘮叨嘮叨,和一年未見的堂兄弟一起喝喝酒,玩耍玩耍,那種心情真是沒有辦法形容,在我個人看來&…

C# Global.asax.cs 定時任務

定時執行更新Redis緩存操作 protected void Application_Start(object sender, EventArgs e) {Timer timer new Timer();timer.Enabled true;timer.Interval 3600000; //執行間隔時間,單位為毫秒; 這里實際間隔為1小時 timer.Start();timer.Elapsed new System.Timers.Ela…

給div拼接html 拼接字符串

簡單描述:拼接html 拼接字符串,說實話,拼接這種東西我自己弄,得花費很多時間,主要是轉義字符,單引號,雙引號這種小細節調整起來比較麻煩,一旦疏忽多了少了一個符號,頁面就…

P2587 [ZJOI2008]泡泡堂 神仙貪心

思路:貪心 提交:1次(看了題解$QwQ$) 題解: 若我方最弱可以干掉對方最弱,則干; 否則若我方最強可以干掉對方最強,則干; 否則若我方最弱與對方最強平手,則平&am…

LifeCycle源碼解讀

對于LifeCycle的簡單使用可以看上一篇文章:LiveDataViewModelRepository搭建MVVM 這篇文章主要是為了閱讀源碼,盡量深入閱讀,能力還是一般,見諒: LifeCycle的作用 解決onCreate等生命周期方法,由于各種原因…

Microsoft SQL Server 2005 Service Pack 2 已經可以下載

下載地址為http://www.microsoft.com/downloads/details.aspx?FamilyIDd07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLangzh-cn嘿嘿,這么快就SP2了 轉載于:https://www.cnblogs.com/lazerjulysky/archive/2007/03/04/663279.html