首页> 中国专利> 一种面向WebLogic的Form身份鉴别的单点登录集成方法

一种面向WebLogic的Form身份鉴别的单点登录集成方法

摘要

本发明涉及一种面向WebLogic的Form身份鉴别的单点登录集成方法,所述方法包括单点登录过滤器、身份服务系统和统一用户数据库;所述过滤器部署在采用Form身份鉴别的WebLogic应用服务器上;对于未完成身份鉴别的用户获取登录页面的请求,所述过滤器将用户引导到身份服务系统;身份服务系统对用户身份鉴别后通过浏览器将包含有从统一用户数据库中获得的用户在WebLogic登录所需的用户名、口令的身份断言以自动POST方式提交到WebLogic上的身份断言验证路径;所述过滤器拦截并验证身份断言后,用身份断言中的用户名、口令调用WebLogic的登录方法;若登录成功,则将用户引导到初次要访问的受保护的页面,否则,将用户引导到登录页面重新进行登录并进行口令更新。

著录项

  • 公开/公告号CN102801808A

    专利类型发明专利

  • 公开/公告日2012-11-28

    原文格式PDF

  • 申请/专利权人 武汉理工大学;

    申请/专利号CN201210295246.7

  • 发明设计人 龙毅宏;吴志奇;郭浩平;

    申请日2012-07-30

  • 分类号H04L29/08(20060101);H04L29/06(20060101);

  • 代理机构42104 武汉开元知识产权代理有限公司;

  • 代理人潘杰

  • 地址 430070 湖北省武汉市洪山区珞狮路122号

  • 入库时间 2023-12-18 07:31:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-19

    未缴年费专利权终止 IPC(主分类):H04L29/08 授权公告日:20141105 终止日期:20180730 申请日:20120730

    专利权的终止

  • 2014-11-05

    授权

    授权

  • 2013-01-23

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20120730

    实质审查的生效

  • 2012-11-28

    公开

    公开

说明书

技术领域

本发明属于信息安全的身份鉴别与访问控制技术领域,特别地,是一种面向WebLogic的Form身份鉴别的单点登录集成方法。

背景技术

随着企业电子商务和办公信息化的发展,企业、组织机构部署了大量的提供特定功能的信息系统(以下统称应用系统)。为了解决用户在使用不同应用系统时需要记忆、输入不同的用户名、口令这一问题,人们提出了单点登录(Single Sign On)技术。所谓单点登录,即用户只需要使用一个身份凭证(如一个用户名、口令,或一张数字证书)在某个系统完成在线身份鉴别(即登录,login)后,就能够访问他能访问的所有其他系统而无需再次输入用户名、口令或使用数字证书进行登录。

在目前已部署的应用系统中有相当大一类是采用Browser/Server架构(浏览器/服务器,简称B/S架构)和Web页面技术开发的系统,这类系统称为Web应用系统(Web应用系统由Web服务器和部署在其上的由特定Web页面技术开发的、提供特定应用功能的Web应用程序构成,Web应用程序也称为Web应用)。为了实现Web应用系统的单点登录,人们引入了一个称为身份服务系统(Identity Provider,IdP)的概念和系统,它是一个在线提供身份鉴别服务的Web服务系统。对于Web应用系统而言,用户只需使用浏览器在身份服务系统完成一次登录(即在线身份鉴别),就能访问该身份服务系统信任域中的其他的他能够访问的Web应用系统而无需再次进行登录操作(即无需再进行身份鉴别)。

但是,单点登录技术要获得成功应用,有个关键问题需要解决:这就是如何使得已有的各类Web应用系统能与身份服务系统互联从而实现单点登录,特别是如何在不修改原有Web应用系统的Web应用程序和原有身份鉴别机制的情况下实现与身份服务系统的互联和单点登录?这就涉及到单点登录的集成技术。要在不改变Web应用系统原有身份鉴别机制的情况下实现单点登录,所采用的单点登录集成方案就必须考虑与系统原有身份鉴别机制的有机结合。在Web应用系统目前所采用的身份鉴别机制中,Form身份鉴别是一种最常用的机制,它之所以被称为Form身份鉴别是因为采用这种身份鉴别方式时,用户是通过Web页面的HTML(HyperText Markup Language)的Form表单输入用户名、口令,然后通过浏览器将用户名、口令提交到服务器端进行验证。

针对Web应用系统采用Form身份鉴别的情形,本申请人曾在其 “单点登录系统中针对Form身份鉴别的单点登录集成方法”专利申请中(专利申请号:201210083321.3)提出了一种无需修改Web应用系统及其身份鉴别机制的单点登录集成解决方案;但是,所述单点登录集成方法对于Web应用是部署在WebLogic应用服务器(Application Server,简称WebLogic)上且依赖于WebLogic(的Web容器,即Web Container)的Form身份鉴别机制对用户进行身份鉴别的情形并不适用。这是因为,所述专利申请中所述单点登录集成方法要获得成功应用,需要有基于Web服务器(或Web容器)扩展机制开发的HTTP插件(如Filter、Valve)能够拦截用户通过浏览器提交到用户名、口令验证路径(页面)的HTTP请求;但是,当Web应用系统采用WebLogic提供的Form鉴别机制时,基于WebLogic提供的扩展机制开发的HTTP插件(包括普通的Servlet Filter和WebLogic的Authentication Provider的Servlet Authentication Filter)都不能拦截到用户浏览器提交到用户名、口令验证路径(即j_security_check)的HTTP请求。

本发明就是针对Web应用部署在WebLogic上且依赖于WebLogic的Form身份鉴别机制对用户进行身份鉴别的情形,提出相应的单点登录集成解决方案。

发明内容

本发明的目的是针对部署在WebLogic应用服务器上的Web应用采用WebLogic的Form身份鉴别机制对用户进行身份鉴别的情形,提出一种无需修改Web应用(程序)和WebLogic的身份鉴别设置(即不改变WebLogic对用户的身份鉴别方式,也即Form身份鉴别)即可实现单点登录的面向WebLogic的Form身份鉴别的单点登录集成方法。

为了实现上述目的,本发明所采用的技术方案是:

一种面向WebLogic的Form身份鉴别的单点登录集成方法,所述方法包括单点登录过滤器(Filter)、身份服务系统(Identity Provider)以及统一用户数据库,其特点是:

所述单点登录过滤器:部署在采用Form身份鉴别的WebLogic应用服务器上,拦截HTTP请求,并根据拦截的HTTP请求URL(Uniform Resource Locator)是对应于部署在WebLogic上的Web应用所对应的登录页面,还是身份断言(Identity Assertion)或安全令牌(Security Token)验证路径,还是修改后的用户名、口令验证路径,还是其他页面URL的情形,分别按不同的处理逻辑进行相关处理;

身份服务系统:通过身份鉴别页面和用户提交的身份凭证(Credential)对用户进行在线身份鉴别,为完成身份鉴别的用户签发证明其身份及身份相关信息的身份断言或安全令牌,并通过用户浏览器将所签发的身份断言或安全令牌提交到用户要访问的Web应用系统;所述身份服务系统通过对称密钥或非对称密钥的数字签名保证身份断言或安全令牌的有效性;

统一用户数据库:用于保存用户在每个Web应用系统中的用户名、口令,以及用户在身份服务系统进行身份鉴别(登录)的身份凭证与其在每个Web应用系统中的用户名、口令的对应关系。

所述Web应用系统由WebLogic应用服务器和部署在其上的Web应用构成;所述WebLogic上部署一个或多个Web应用,每个Web应用都有一个唯一应用标识,以区分不同的应用;部署在WebLogic上的每个Web应用有独立的登录页面、身份断言或安全令牌验证路径以及修改后的用户名、口令验证路径;所述修改后的用户名、口令验证路径是一个与部署在WebLogic上的Web应用所对应的原有的用户名、口令验证路径(即j_security_check)不相同的一个用户名、口令验证路径。

当一个未登录的用户访问部署在WebLogic应用服务器上的Web应用的受安全保护的页面路径时,WebLogic应用服务器将用户引导到对应的登录页面。

所述单点登录过滤器拦截获取登录页面的HTTP请求,并判断用户是否已在身份服务系统完成身份鉴别,若没有,则将用户引导到身份服务系统进行身份鉴别。

所述身份服务系统在获得用户要求进行身份鉴别的请求后,先确定用户要访问的Web应用系统是否是其信任、服务的系统,若不是,则返回出错提示;否则,所述身份服务系统基于用户提交的身份凭证对用户进行在线身份鉴别;在完成身份鉴别后,身份服务系统根据用户身份鉴别时所用的身份凭证从统一用户数据库中获取用户在要访问的Web应用系统中的用户名、口令,并为该用户签发一个证明其身份的身份断言或安全令牌,身份断言或安全令牌中包含有从统一用户数据库中获取的所述用户名、口令,其中口令被加密;然后,身份服务系统通过用户浏览器将所签发的身份断言或安全令牌提交到用户要访问的Web应用系统所对应的身份断言或安全令牌验证路径。

所述单点登录过滤器拦截提交到所述身份断言或安全令牌验证路径的身份断言或安全令牌后,验证身份断言或安全令牌的有效性,验证通过过后从中获取用户在要访问的Web应用系统中的用户名、口令,口令被解密;然后,所述单点登录过滤器调用WebLogic应用服务器的相应用户登录方法,进行用户登录操作;登录成功后,将用户引导到其初次要访问的受安全保护的页面。

若所述单点登录过滤器拦截获取登录页面的HTTP请求时,确定用户已在身份服务系统完成身份,则将返回的HTTP响应中的登录页面中的原有的用户名、口令提交路径(即Form的Action的URL)修改为所述修改后的用户名、口令验证路径。

当用户获得了其要访问的Web应用系统的登录页面后,输入其在该Web应用系统中的用户名、口令,然后提交用户名、口令。

所述单点登录过滤器拦截提交到修改后的用户名、口令验证路径的HTTP请求后,确定用户是否已在身份服务系统完成身份鉴别,若没有,则将用户引导到身份服务系统进行身份鉴别;否则,所述单点登录过滤器使用用户提交的用户名、口令调用WebLogic应用服务器的相应用户登录方法,进行用户登录操作;登录成功后,先更新统一用户数据库中用户在要访问的Web应用系统中的对应于当前用户名的口令,然后将用户引导到其初次要访问的受安全保护的页面。

当用户在身份服务系统完成身份鉴别并通过单点登录过滤器在要访问的Web应用系统完成登录后,将能访问受安全保护的页面(路径)。

本发明的创新之处在于:通过一个单点登录过滤器,使得部署在WebLogic上并基于WebLogic的Form身份鉴别对用户进行登录处理的Web应用系统能在不作修改(即,不修改Web应用程序和WebLogic的身份鉴别设置)的情况下实现单点登录。

附图说明

图1为本发明的整体结构框图。

具体实施方式

下面结合附图对本发明作进一步的详细描述。

本发明是一种面向WebLogic的Form身份鉴别的单点登录集成方法,本方法的的整体结构如图1所示,包括部署在WebLogic应用服务器上的单点登录过滤器,身份服务系统以及统一用户数据库。

所述部署在WebLogic应用服务器上的单点登录过滤器对于拦截到的HTTP请求URL是获取Web应用所对应的登录页面的情形,按如下方式进行相关处理:

第I步骤:让获取登录页面的HTTP请求通过;

第II步骤:拦截所述HTTP请求的HTTP响应,通过保存在会话(Session)对象中的信息判断用户是否已在身份服务系统完成身份鉴别,若是,则将HTTP响应中的登录页面中的原有的用户名、口令提交路径修改为所述修改后的用户名、口令验证路径,然后返回修改后的HTTP响应;否则,通过URL重定向(返回HTTP响应码302并通过Location响应头部)将用户浏览器引导到身份服务系统的身份鉴别页面,重定向URL中包含有用户当前要访问的Web应用的应用标识。

所述身份服务系统按如下方法对用户访问身份鉴别页面的HTTP请求进行处理:

第一步:通过HTTP请求URL中携带的Web应用标识确定用户要访问的Web应用是否是身份服务系统所信任并为之提供服务的Web应用,若不是,则返回出错信息;否则,转入下第二步;

第二步:确定用户之前是否已在身份服务系统完成身份鉴别,若是,则转入第三步;否则,返回身份鉴别页面,并通过相应的用户身份凭证(如用户名、口令,或数字证书)对用户进行身份鉴别,鉴别成功后转入第三步;

第三步:根据用户身份鉴别所用的身份凭证从统一用户数据库中获取用户在所述要访问的Web应用中的对应用户名、口令;

第四步:为用户签发一个证明其身份及相关身份信息的身份断言或安全令牌,身份断言或安全令牌中包含有用户在所述要访问的Web应用中的对应用户名、口令,其中口令被加密;然后将身份断言或安全令牌以Form表单的方式返回到用户浏览器,并通过Form表单的自动POST提交(Submit)方式将身份断言或安全令牌提交到用户需要访问的部署在WebLogic上的Web应用所对应的身份断言或安全令牌验证路径。

所述部署在WebLogic上的所述单点登录过滤器对于拦截的HTTP请求URL是Web应用所对应的身份断言或安全令牌验证路径的情形,按如下方式进行处理:

步骤一:验证身份断言或安全令牌验证的有效性,若验证不通过,则返回出错信息;否则,转入步骤二;

步骤二:从身份断言或安全令牌中获取用户在要访问的Web应用中的用户名、口令,并解密加密后的口令;

步骤三:在会话对象中保存用户身份信息,包括步骤二中获得的用户在要访问的Web应用中的用户名以及用户已在身份服务系统完成身份鉴别的标志;

步骤四:调用WebLogic提供的ServletAuthentication类的weak方法,输入步骤二中得到用户在要访问的Web应用中的用户名、口令对用户进行身份鉴别,即进行登录WebLogic的操作,若调用返回的信息显示身份鉴别不通过,即登录失败,则返回出错页面;否则,转入步骤五;

步骤五:检查会话对象中是否有WebLogic保存的用户初次要访问的受安全保护的页面的URL,若有,则通过URL重定向将用户引导其初次要访问的受安全保护的页面;否则,通过URL重定向将用户引导一个缺省页面。

所述部署在WebLogic上的所述单点登录过滤器对于拦截的HTTP请求URL是Web应用所对应的修改后的用户名、口令验证路径的情形,按如下方式进行处理:

步骤A:通过会话对象检查用户是否已在身份服务系统完成身份鉴别,若是,则转入步骤B;否则,通过URL重定向将用户引导到要访问的Web应用所对应的登录页面,完成本次处理;

步骤B:从HTTP请求中获取用户提交的用户名、口令,若能成功获取,则转入步骤C;否则,通过URL重定向将用户引导到登录页面,完成本次处理;

步骤C:检查步骤B获取的用户名与会话对象中保存的、从身份服务系统返回的用户在当前 Web应用中的用户名是否一致,若一致,则转入步骤D;否则,通过URL重定向将用户引导到登录页面,完成本次处理;

步骤D:调用WebLogic提供的ServletAuthentication类的weak方法,输入步骤B从HTTP请求中获取的用户名、口令对用户进行身份鉴别,若调用返回信息显示身份鉴别成功,则转入步骤E;否则,通过URL重定向将用户引导到登录页面,完成本次处理;

步骤E:使用步骤B从 HTTP请求中获取的用户名、口令更新统一用户数据库中的对应于用户在当前要访问的Web应用中的对应于当前用户名的口令;

步骤F:检查会话对象中是否有WebLogic保存的用户初次要访问的受安全保护的页面的URL,若有,则通过URL重定向将用户引导其初次要访问的受安全保护的页面;否则,通过URL重定向将用户引导一个缺省页面。

所述部署在WebLogic上的单点登录过滤器对于拦截的HTTP请求URL既不是对应于Web应用所对应的登录页面,也不是对应于身份断言或安全令牌验证路径,也不是对应于修改后的用户名、口令验证路径的情形,按如下步骤进行登录相关处理:

第1步:检查会话对象中是否有WebLogic保存的用户初次要访问的受安全保护的页面的URL,若没有,则让HTTP请求通过;否则,转入第2步;

第2步:检查当前HTTP请求的方法是GET还是POST,若是POST,则让HTTP请求通过;否则,转入第3步;

第3步:检查当前HTTP请求的URL是否等于会话对象中WebLogic保存的用户初次访问的受安全保护的页面的URL,否不是,则让HTTP请求通过;否则,转入第4步;

第4步:检查会话对象中WebLogic保存的用户初次访问的受安全保护页面的方法是GET还是POST,若是GET,则清除查会话对象中WebLogic保存的用户初次访问的受保护页面的信息,然后让HTTP请求通过;否则,转入第5步;

第5步:将当前HTTP请求的方法改为POST,将会话对象中WebLogic保存的用户初次访问受安全保护的页面时提交的POST参数,作为当前修改为POST方法的HTTP请求的POST参数,然后清除查会话对象中WebLogic保存的用户初次访问的受安全保护的页面的相关信息,之后让修改的HTTP请求通过。

所述单点登录过滤器的功能既可以仅由一个普通的Servlet过滤器 (Servlet Filter)模块实施,也可以由一个普通的Servlet过滤器模块和一个WebLogic应用服务器的身份鉴别提供者(Authentication Provider)的Servlet身份鉴别过滤器(ServletAuthentication Filter)模块共同实施。

如果所述单点登录过滤器的功能仅由一个普通的Servlet过滤器模块实施,那么,所述部署在WebLogic应用服务器上的Web应用所对应的所述登录页面、身份断言或安全令牌验证路径及修改后的用户名、口令验证路径位于WebLogic应用服务器的非受安全保护的区域;所有的HTTP请求包括提交到受安全保护路径和非受安全保护路径的HTTP请求都被所述普通的Servlet过滤器模块拦截处理。

如果所述单点登录过滤器功能由一个普通的Servlet过滤器模块和一个WebLogic应用服务器的身份鉴别提供者的Servlet身份鉴别过滤器模块共同实施,那么,所述身份断言或安全令牌验证路径,以及修改后的用户名、口令验证路径或者部分或者全部位于WebLogic应用服务器的受安全保护的区域;提交到非受安全保护路径的相关HTTP请求被所述普通Servlet过滤器拦截处理;提交到受安全保护的身份断言或安全令牌验证路径的HTTP请求,和/或提交到受安全保护的修改后的用户名、口令验证路径的HTTP请求,被所述Servlet身份鉴别过滤器模块拦截处理;所有提交到其他受安全保护路径的HTTP请求,或者被所述普通Servlet过滤器或者被所述Servlet身份鉴别过滤器模块拦截并进行相关处理。

单点登录过滤器所使用的会话对象是Servlet Java Session对象。

所述身份服务系统的具体实现可使用任何Web开发技术(如J2EE等)并基于前面所述的身份服务系统的相关处理流程开发实现。

所述身份断言或安全令牌,可以采用SAML(Security AssertionMarkup Language)的SAML断言(包括身份鉴别断言和属性断言),或WS Federation Passive Requestor Profile(WS-FPRP)的安全令牌,或自定义的安全令牌;单点登录过滤器与身份服务系统的交互可以使用SAML协议,或WS-FPRP协议,或者自定义协议。若身份断言或安全令牌及单点登录协议是基于XML(eXtensible Markup Language)的,如SAML或WS-FPRP,则对协议和身份断言或安全令牌的处理可以使用各种相关的成熟的Java类库、工具包(如Java API forXML Processing ,JAXP等),对于涉及数据加密、数字签名的实现,也可以使用各种成熟的Java类库、工具包(如Java CryptographyExtension)。

所述统一用户数据库可以基于任何一种关系数据库(如MySQL、SQLServer、Oracle等)或目录型数据库(LDAP)实现。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号