手把手教你可复用的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.mzph.cn/news/277106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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地址。你也许会担心,如果有人…

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领域的第一份打击 真…

单点登录(sso)入门

单点登录的英文名叫做Single Sign On,简称SSO。 在以前,一般我们就单系统,所有的功能都在同一个系统上。 后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。 比如阿里系的淘宝和天猫,…

Cocopods的升级错误解决

2019独角兽企业重金招聘Python工程师标准>>> 写在前面: 这篇笔记的由来,是因为在这个周五下班后想起了之前 GitHub 上一个关于 iOS Charts 的 demo 仍处于未完待续的状态。便想着完成了它,遂打开了该工程,开始用 pod 更…

XML 命名空间以及它们如何影响 XPath 和 XSLT (Extreme XML)

Dare Obasanjo Microsoft Corporation 2002 年 5 月 20 日 本文是有望长期发表的系列文章的第一篇,这些文章专门阐释由 Microsoft 支持的 W3C XML 技术的更微妙的内容。尽管 XML 的核心仍相当简单,但是围绕它的技术已经变得日益复杂,而且其中…

走马观花:Visual Studio Code Name Orcas Mar07CTP /体验DLINQ

不知道什么叫“Orcas”?简单说应该就是下一版本的Visual Studio 吧。现在atlas,LINQ,WF之类东西,对于VS2005是单独安装的,Orcas应该是全内置吧。还有很多功能的增强,可以参考英文说明。闲话不说&#xff0c…

[导入]C#实现Des加密和解密

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/24/1540018.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/25/816385.html

帆软报表(finereport)图表钻取详细类别 当前页对话框展示

添加参数栏,季度下拉框的控件命名为 jd 这里添加雷达图做案例 编辑→特效→ 添加JavaScript 参数:wd 值:分类名 #取雷达图所点击的点 参数:jd 值:公式$jd #取参数下拉所选参数 JavaScript详细: var if…

大数据之MySql笔记-0916

2019独角兽企业重金招聘Python工程师标准>>> 复习: 1.MySQL部署 拓展题: rm -rf $MYSQL_HOME/arch/* binlog日志 恢复 主从同步 rm -rf $MYSQL_HOME/data/* 数据 $MYSQL_HOME/scripts/mysql_install_db \ --usermysqladmin \ --basedir/usr/local/mysql \ --dat…

Sql Server设置用户只能查看并访问特定数据库

1.新建登录用户 以管理员身份登陆数据库(权限最高的身份如sa),点击安全性->登录名,右键新建登录名,输入登录名和密码,取消强制实施密码策略。 2.将服务器角色设置为public 注意:很重要的一…

arcgis jsapi接口入门系列(6):样式

2019独角兽企业重金招聘Python工程师标准>>> symbol: function () {//线样式//样式详情请看官方文档let style {//线颜色,支持多种格式://CSS color string:例如"dodgerblue";//HEX:例如"#33cc33"…

ORM(四)应用.脚本管理工具

ORM(四)应用.脚本管理工具数据脚本的维护,不知道各位有什么好的工具推荐没有,由于以前一直是用手工来进行脚本的维护操作,很麻烦,而且容易出错.大多数时候,都在原来的基础上进行直接修改.今天有点时间就完成了一个简陋的工具,也是对ORM组件的应用.下面是程序的运行界面http://f…

OpenCV2:应用篇 三维重建

一.简介 VTK(Visualization Toolkit):开源三维图形库 ITK(Insight Segmentation and Registration Toolkit):开源医学图像处理库,包含医学算法和支持医学图片格式DICOM QT:用户图形界面 转载于:https://www.cnblogs.com/k5bg/p/11232131.html