周末陪女朋友去了,沒寫,告罪,上班后急忙補上。
這里說到了可復用得設計,所謂可復用就是指的,引入Dll,改改配置就能使用,而不是打開源代碼東改改西改改再來調試調試最后OK。我們這里盡量提高抽象層次減少系統耦合。
首先系統需要一個中心認證端,多個客戶端構成。所以需要一個SSO的模塊和一個PSO的模塊,這兩個模塊都由工具類和HttpModule組成
這里SSO的Keeper類和PSO的PSOClient類都是HttpModule。
Keeper在配置中設置一個URL,它只監聽對這個URL的請求,就是用來處理PSO向SSO端查詢SSOToken是否存在的請求的。它包含了SSO端的邏輯
PSOClient在配置中設置一個例外列表,它監聽例外列表外的所有請求,判斷是否有PSOToken,或者URL里是否包含SSOToken,它包括了整個PSO端的邏輯
TicketCreator是一個工具類,用于用戶登錄成功后調用來產生SSOToken的。
這兩個組件包括了所有的邏輯,但是有一些公共的東西我們需要抽象出來(不然就成了意大利面條式的代碼了:})
這個項目封裝了整個3DES加密解密,密鑰生成的邏輯,.NET的加密解密名字空間里的類用法很惡心,太惡心了。
Encrypter加密,Decrypter解密,KeyMaker密鑰生成,Common是公共的字符串操作類
這個項目包含了所有公共數據結構和操作的基本邏輯還有密鑰的獲取更新的功能,為了擺脫對數據庫的依賴,這里我們使用了文件的方式,其實老實說效率不會低。
KeyManager是密鑰管理的操作的類
PSORequest是PSO向SSO發送的SSOToken查詢請求的結構及其操作的類
SSOResponse是SSO驗證登陸成功后向PSO發送的包含SSOToken的請求的結構及其操作的類
Ticket是操作Cookie票據的類
?
實用的方法:
引入DLL到SSO站點
修改Web.Config
添加自定義配置和加載HttpModule的模塊
這樣子SSO站點就配置好了
引入DLL到PSO站點
修改Web.Config
添加自定義配置和加載HttpModule的模塊
ok
現在用KeyManager生成一個Key和IV的文件,之后就可以使用了
看看,是不是一句代碼都沒改,也不用重新編譯阿:}
?
下一章放出主要代碼和說明
?
To be continue......