SSO(单点登录)组件扩展开发介绍

         SSO(单点登录)作为一种解决方案,领域内有许多现成的商品组件或其他开源组件。但真正实施运用到实际项目中,并不易以产品化组件的方式安装、实施,往往实际的项目需要做SSO(单点登录)组件做集成时,有许多个性化的需求,组件并不能很好的满足这些项目需求,可能就要扩展改造SSO(单点登录)组件。这样,作为SSO(单点登录)组件的提供者,如何来管理SSO(单点登录)组件的各个版本,还能满足不同的个性化需求的定制开发,保证各个版本的有效控制、方便开发维护等等,是我们要重视研究的课题。

        笔者以自身在SSO(单点登录)组件开发、实施为实例,谈一下。我公司是个集团公司,在各个子公司或部门有许多自己的系统需要做SSO(单点登录)集成,公司专门成立了一个专门做SSO(单点登录)组件研发的部门,为各个子公司或部门提供SSO(单点登录)组件,SSO项目组以CAS开源组件为原型开发出SSO(单点登录)组件,在各个子单位,经过不断的研发和实施,积累了核心版本已经发展到SSO4.0,各子单位基于SSO核心版本的可能有所不同,比如有些是SSO2.5,SSO3.0,SSO4.0,各子单位在核心版本下做了一些个性化的扩展开发。最新版本SSO4.0是在各子单位实施时,搜集的各种需求进行整合开发完善形成的。按理最新版本向下兼容,应当能在各子单位项目中使用,统一成最新版本最好,这样更统一、维护更方便。但考虑具体情况,各子单位可能为保持自身系统稳定性,不愿意进行SSO版本升级,作为组件的提供者,又不能强制升级,所以很多还是维持原来的版本。

CAS组件扩展思路研究

        CAS作为一个开源SSO提供组件,它的版本一直在更新,我们参考一下它的版本升级扩展的思路吧,目前CAS的最新版本是cas-server-3.4.11-release.zip 07-Nov-2011 20:40  51M ,我们先看下它的目录结构,如下:

说明:其中,cas-server-core目录包含casserver的基础核心源码(java源文件);cas-server-webapp目录包含web应用的结构的源文件(css、js、jsp页面、WEB-INF目录等);cas-server-documentation目录包含一些xml文档说明;cas-server-integration-*目录包含集成berkeleydb、jboss、memcached、restlet环境SSO票据ticket注册功能的相关源码;cas-server-support-*目录包含支持x509证书、jdbc、ldap、legacy凭证继承、openid、jradius安全框架、SPNEGO安全协议、trusted、generic通用等方式的认证;modules目录包含上述各目录的打包文件,java源码打包为jar,web应用源码打包为war,打包封装的好处是便于使用SSO组件模块化分开来开发引用,也可以根据自身项目需要可拆可合式的开发引用。

下图为cas-server的web应用默认引用的jar包列表

下图为jar包中META-INF下的MANIFEST.MF文件内容

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: battags
Build-Jdk: 1.6.0_26
Specification-Title: JA-SIG CAS Core
Specification-Version: 3.4.11
Specification-Vendor: Jasig
Implementation-Title: JA-SIG CAS Core
Implementation-Version: 3.4.11
Implementation-Vendor-Id: org.jasig.cas
Implementation-Vendor: Jasig                                                                                                                                           

 说明:这是打包源码的配置清单描述,其中描述了jdk的版本,开发组织,构建工具等内容,这样提供给开发者能够清晰的了解项目的开发环境信息,便于开发者决策开发和使用此源码包的方式、方法。这个通常也是我们软件开发中所忽略的内容。

 

        上述cas源码目录构建思路是,将基本不变的部分封装在核心模块cas-server-core,根据开发环境不同可扩展或集成的分别封装为不同的模块(cas-server-integration-*、cas-server-support-*),还提供了打包引用的方法(modules)。这样在我们项目开发中使用SSO组件就有了灵活扩展选择的余地,我们可以采用版本默认的基础版本组织成组件来使用,也可以分模块化的来按需取用,二次开发时可以根据不同的模块划分扩展不同的部分,这样灵活的结构方式值得我们在软件开发中组织架构、版本整合优化等方面都有可借鉴之处。我们在新项目的SSO组件整合开发时,不应照搬照抄,应根据项目实际情况取舍使用SSO组件模块或功能点,应体现可扩展性、可用性、可重用性原则,形成一个简单化、清晰、完整、易维护的组件,交付给项目。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云焰

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值