首页 > 范文大全 > 正文

基于AM的单点登录(SSO)解决方案

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于AM的单点登录(SSO)解决方案范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:通过阐述基于Sun Java System Access Manager(简称am)的单点登录解决方案,介绍了单点登录系统的系统原理、体系架构,以及实现的技术。

关键词:单点登录;统一身份认证;认证接口

中图法分类号:TP393 文献标识码:A 文章编号:1009-3044(2008)05-10871-04

1 引言

伴随着数字信息化程度的提高,企业、政府、学校和研究机构中运行的应用子系统越来越多。虽然各系统的功能有别,但都需要鉴别使用者的身份,这样就带来了一个突出的问题:众多用户面对多个系统要重复输入帐号、口令等信息,不仅烦琐,更重要的是容易出现口令丢失,一旦口令泄漏不仅会造成不可估量的损失。

鉴于此,在一个企业或者学校的范围内,可以使用统一身份认证系统。统一身份认证系统对身份认证数据规定统一的格式,便于扩充和修改;采用统一的身份信息数据库,避免了各个应用系统的身份信息数据库的数据更新,同时增加了数据安全性;采用统一的身份认证机制和接口,避免了各种应用系统的重复开发,便于应用系统的集成。

统一身份认证中要解决的一个重要问题是:各应用系统用户名和口令不统一,期望提供一套方便、安全的口令认证方法,让用户只要一套用户名和口令就可以使用网络上他有权使用的所有业务系统,即满足用户的单点登录(sso)。

2 系统原理与体系架构

单点登录系统的根本原理是保持用户的会话(session)状态。用户经过一次认证就可建立单点登录会话,每个单点登录会话对应于一个令牌(token),用户访问应用系统时向应用系统传递单点登录令牌,应用系统能够根据令牌识别用户的认证状态,从而使一次认证能够被多个应用系统认可,避免了重复认证。

本文将采用Sun Java System Access Manager(简称AM)作为实现单点登录的底层技术平台。

根据上述原理,AM对单点登录提供的SDK级别的支持,其中包括单点登录令牌的创建与验证。以WEB应用的单点登录为例:用户通过AM的认证页面进行认证,认证通过之后,平台为该用户创建一个单点登录令牌,并将该令牌的ID通过cookie返回至用户浏览器;当用户访问WEB应用系统时,单点登录令牌ID自动通过cookie传递至WEB应用系统,WEB应用系统可以通过单点登录令牌ID还原单点登录令牌,并向Access Manager验证单点登录令牌是否有效。如果有效,则应用系统可以从单点登录令牌获取用户身份信息,而不再需要用户进行再次认证。对于C/S结构的应用,单点登录过程是类似的,只是单点登录令牌ID的传递方式不同。

图1 单点登录SDK的体系结构图

单点登录会话的初始状态是无效,表示单点登录会话虽然已经创建并被分配给用户,但用户尚未通过有效认证。无效的单点登录会话也通过一个单点登录会话令牌身份,并存储在用户浏览器的cookie中。当用户认证成功之后,单点登录会话变为有效状态。该单点登录会话仍以同一个单点登录会话令牌身份,用户浏览器中的cookie不变,只是服务器维护的会话状态变为有效。单点登录会话可以因为以下原因而销毁:

(1)客户端空闲时间达到最大空闲时间;

(2)会话时间达到最大会话有效时间;

(3)由于用户登出而显式销毁会话。

会话销毁之后,客户端cookie中保存的单点登录会话令牌身份仍然存在,只是与该令牌相关的会话信息已经在AM中删除。

单点登录会话的生命期由AM进行管理,会话的生命期特性可以通过配置选项进行定制。在AM中,与单点登录会话相关的属性是通过“会话”服务(session service)进行管理的,这些可配置属性均为动态类型的属性,可以针对组织、角色和服务配置,并可被继承。

3 认证方式设计

单点登录系统采用认证方式与登录方式分层的设计,可平滑扩展多种登录方式,如用户名口令、证书、智能卡等,支持多级登录认证机制。

为防止暴力破解,提供附加图像码的方式增加安全性。

图2 单点登录会话的生命周期

3.1用户认证方式

单点登录系统提供了多种内置的登录方式。

(1)LDAP认证方式:是单点登录系统提供的缺省认证方式。使用LDAP认证方式,用户名与口令是存储在指定的LDAP目录中。当一个用户登录时,提供的用户名与口令若与该LDAP目录中指定子树中某一个用户记录的用户名与口令相同,则认证成功,登录者具有LDAP目录中该用户记录对应的身份。

(2)数字证书认证方式:使用X509v3数字证书,只要客户端可以提供X509v3数字证书,系统允许其登录。可以配置用户的个人数字证书必须和目录服务器中存储的证书相同,并与证书回收列表(CRL)比较以确保个人证书是有效的。

(3)RADIUS认证方式:系统利用外部的拨号认证系统作为本身的认证机制,如果用户通过了外部拨号认证系统的认证,系统则认为此用户认证通过。

(4)UNIX认证:系统利用所安装UNIX环境的认证系统作为本身的认证机制,如果用户通过了UNIX认证系统的认证,系统则认为此用户认证通过。

(5)Microsoft Windows/NT 域认证:系统利用一台Windows 域认证系统作为本身的认证机制,如果用户通过了它的认证,则认为此用户认证通过。

(6)多因子认证:除了上述内置的认证方式之外,平台也提供了服务提供者接口来开发定制的认证方式。

3.2用户认证界面

用户认证界面是单点登录系统与最终用户的接口,它负责向用户显示登录表单,搜集用户认证信息,并传回服务器端;服务器端通过调用平台的认证API进行认证,并为通过认证的用户创建单点登录系统的单点登录会话。单点登录系统提供了基于WEB的用户认证界面,该用户认证界面是由单点登录系统动态生成的,提供了平台中所有认证模块的用户界面。

单点登录系统的用户认证界面的URL是:

//UI/login

通过向该URL传递各种参数,可以显示个性化的用户认证界面。

单点登录系统的用户认证界面是基于JATO(J2EE Assisted Take-Off)WEB应用框架创建的,它通过JSP和XML为用户提供图形化界面的交互方式。对用户认证界面的常见客户化工作包括对认证界面上的文字信息和图片进行客户化,以及对用户认证界面进行本地化。

认证界面是基于一组JSP模板和XML文件动态生成的。JSP模板定义了认证页面的布局, XML文件是认证模块的配置资源文件。缺省JSP模板和XML文件均位于位于IS_Root/SUNWam/web-apps/services/config/auth/default目录下。这些文件均可修改,使得不同的组织、子组织、地区、服务/应用、客户端类型具有不同的认证界面。

4 认证接口设计

单点登录系统提供了公共的认证服务架构,对外提供多种认证接口,以及认证服务的扩展接口。基于统一的认证服务的应用系统间可以实现单点登录。

4.1 认证服务架构

单点登录系统提供的认证服务是基于JAAS(Java认证与授权服务)框架的。JAAS是Java 2平台标准版(J2SETM) 1.4规范的组成部分,它提供认证与授权服务的应用编程接口与服务提供者接口。

单点登录系统的认证模块是以插件的方式实现的,多种认证模块通过JAAS服务提供者接口与单点登录系统相连。这种基于插件的认证模块实现方式使得单点登录系统能够支持已经广泛应用的各种标准认证方式,也支持客户自行定制的认证方式。

4.2 应用认证接口

SUN AM系统提供Java和XML/HTTP两种应用认证接口。Java认证接口可以在本地或远程调用。在本地调用Java编程接口直接与JAAS认证API交互,在远程调用Java编程接口则实际通过XML/HTTP与认证平台的认证服务交互。XML/HTTP认证接口提供了与语言和平台无关的方式对认证服务进行远程访问。对基于Java的应用系统(包括基于JSP的WEB应用系统和基于Java的应用程序)可以使用Java编程接口;对于非Java的应用系统,可以使用XML/HTTP编程接口或C/C++编程接口。

如果仅使用SUN Access Manager API接口,存在诸多限制:

(1)操作系统限制:C/C++接口目前只能稳定的运行在solaris系统中,其他主流的UNIX/Linux没有办法支持;

(2)XML解析复杂:对于非Java和C/C++开发的系统集成来说,集成应用需要编写了解复杂的XML结构,编写XML解析程序;

(3)集成系统开发工作量大:集成系统采用API模式集成时不但要完成SUN API复杂的过程配置,还需要进行通讯多线程的处理,在双机环境下还需要大量的编程支持动态切换;

(4)平台升级困难:直接采用SUN API集成,每个集成应用都与底层平台紧密耦合,当平台升级时,需要每个应用重新进行修改,无法保证整个系统的平滑升级。

为了解决这些问题,单点登陆系统采用ICE中间件平台自主开发各类认证接口。ICE是一种面向对象的中间件平台,采用了一种用于使对象接口与其实现相分离的基础性抽象机制,为构建面向对象的客户-服务器应用提供了工具、API 和库支持。在客户机与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关,所以编写客户所用的语言无需与编写服务器所用的语言相同,很好的解决了丰富的多语言集成环境。

其架构图如图3所示:

图3

ICE认证接口是架设在集成应用和统一身份认证平台之间的中间件,支持大多数的主流Unix/Linux平台与MS Windows平台,集成应用系统开发人员无需面对复杂的XML解析,只需要一个对象(类)就可以完成所有认证相关操作,ICE认证接口API是线程安全的,开发人员无需额外的付出就可以获得高效的多线程功能。在架构上ICE接口的存在使得各个集成应用和统一身份平台是非紧密耦合,在代码层统一身份平台的对外接口升级变化将不会影响到各个集成应用,增加了整个系统的稳定和扩展性。同时ICE也支持统一身份认证平台的双机热备模式,能够动态进行切换,集成应用无需付出额外工作考虑平台状态问题。

5 结束语

现在,随着应用系统在企业、政府、学校和研究机构部门中的广泛建设,对于实现各应用系统间单点登录的功能需求也会越来越高。上面所描述的单点登录解决方案,都是建立在同一个厂商提供的平台的基础上,实现跨系统的单点登录。在现有的企业、政府、学校中,有可能会有来自于不同厂商的网络身份管理方案;另外,企业、政府、学校也不可避免地需要和本单位外的应用系统交互,跨域联盟认证解决方案还有待于进一步的研究。

参考文献:

[1] 李爱华 徐立臻 基于ICE技术的身份认证交互模型 计算机应用[J/OL].2005.

[2] 吴晓斌 张月琳 基于LDAP 的校园网统一身份认证系统设计[J/OL].华中科技大学学报,2003.

[3] M. Henning et al ,A New Approach to Object-Oriented Middleware[EB/OL].IEEE INTERNET COMPUTING 2004.

[4] M. Henning et al., Distributed Programming with Ice[EB/OL]./Ice-Manual.pdf. 2004.