周末陪女朋友去了,没写,告罪,上班后急忙补上。
这里说到了可复用得设计,所谓可复用就是指的,引入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......