一种在系统间实现单次登录的方法及系统的制作方法

文档序号:7958485阅读:99来源:国知局
专利名称:一种在系统间实现单次登录的方法及系统的制作方法
技术领域
本发明涉及计算机及互联网技术,尤其涉及在系统间实现单次登录的方法及其系统。
背景技术
许多基于互联网的应用需要用户在多个彼此独立但又密切合作的网站系统间进行一系列操作流程之后才能完成。比如,对于C2C(Consumer toConsumer)电子商务应用,用户可能在一个C2C网站上选购自己心仪的商品,然后通过一个提供交易担保与便捷支付手段的支付网站完成整个交易的流程。在这个例子中,C2C网站与支付网站是两个完全独立的网站,分别有各自的用户身份域和身份验证机制。但对用户而言,往往希望能够得到最流畅的购物体验,而不希望在一次购买活动中需要分别登录两个不同的网站。因此,在这种情况下就需要有一种方便、安全、快捷的单次登录(Single Sign-On,SSO)机制。单次登录是指只需要用户输入一次用于验证的身份信息,即可使用多个需要验证身份的应用程序或访问多个需要验证身份的网站系统,而无须用户再次输入身份信息。
传统的单次登录方法和系统建立在两个基础软硬件设施之上。首先,需要通过一个统一的用户管理系统来维护一个单一的用户视图;其次,需要有一个公共的身份验证系统来实现统一的用户身份验证。用户首先以统一用户身份在公共身份验证系统中登录,并获取可以证明它身份的令牌,当他访问同一个身份管理域中的系统时,在访问请求中包含该令牌,由各个系统分别请求统一身份验证系统验证令牌的有效性并决定身份是否真实。这种传统的单次登录方法与系统如图1所示,实现单次登录的过程如下步骤1、用户浏览器首先请求访问应用系统中的某个资源,应用系统发现用户没有身份令牌,将用户重定向到统一身份验证系统进行身份验证。
步骤2、用户在统一身份验证系统通过身份验证。
步骤3、用户被统一身份验证系统重定向回应用系统,并提交身份令牌至应用系统。
步骤4、应用系统将令牌交给统一身份验证系统验证其真实性,如果真实,则允许用户访问应用系统中被请求的资源,否则,拒绝用户访问被请求的资源。
由于传统的单次登录方法和系统需要在不同网站间建立统一的用户身份库,并搭建统一的身份验证系统。对于不同机构管理下的网站,要建立统一的用户身份库与身份验证系统,在管理策略和技术实现上都存在着困难。这些困难具体表现在1、不同网站有各自的用户群,这些用户集合之间有交集,但不是完全重合的,因此,很难将不同的用户集合纳入到统一的用户身份库中。
2、不同的网站有自己特定的用户注册与管理策略和流程,要求它们转换为使用统一的用户身份管理系统进行用户的注册与管理往往不符合业务的需求。
3、由于统一用户身份库是各个网站系统公用的,但不同网站系统又是独立运营的,因此,很难决定究竟由谁来建立和维护统一用户身份库。
4、身份令牌一般是通过cookie进行传递的,而通过cookie传递身份验证信息要求单次登录域中的不同网站系统位于同一网络域中。对于不同网络域之间的单次登录,采用这种机制实现起来需要相当复杂的流程。
5、统一身份验证系统作为一个集中式的会话管理组件,存在潜在的单点故障及性能瓶颈问题。要解决这一问题,就需要引入高成本、复杂的集群技术,这将大幅度增加建设与维护的成本。
6、将原有的分散的用户身份管理与身份验证系统改造成统一身份管理与身份验证系统,需要对原有系统进行较大的改造,成本与改造风险较大。

发明内容
本发明提供一种在系统间实现单次登录的方法及其系统,以解决现有技术中在系统间实现单次登录需要引入集中式的统一用户身份库和统一身份验证系统,存在实现技术难度大和管理困难的问题。
本发明提供以下技术方案一种在系统间实现单次登录的方法,包括步骤第一系统根据本系统保存的用户身份映射关系,获取已登录用户在第二系统中的身份信息并生成身份签名;将所述身份签名携带在所述用户请求登录第二系统的请求消息中,由第二系统根据该身份签名对用户进行验证。
根据上述方法第一系统获知已登录本系统的用户需要访问第二系统时,生成所述身份签名。
由第二系统将用户的登录请求重定向到第一系统并标识请求身份签名,第一系统根据请求生成所述身份签名并将该登录请求重定向到第二系统。第一系统在确定所述用户未登录本系统时,进一步要求用户提供身份信息以验证该用户。
在携带身份签名的请求消息中进一步标识该用户来自第一系统;第二系统根据标识解析所述身份签名。
在生成身份签名过程中加入时间戳;所述第二系统利用该时间戳验证所述身份签名的有效性。
一种验证系统,包括存储装置,用于保存本系统的用户信息,以及保存用户在多个系统的身份信息之间的映射关系;身份验证装置,用于从所述存储装置获取用户信息对请求登录的用户进行身份验证;
身份签名生成器,用于从所述存储装置获取已登录本系统的用户在其他系统的身份信息生成身份签名。
一种验证系统,包括存储装置,用于保存本系统的用户信息;身份验证装置,用于从所述存储装置获取用户信息对请求登录的用户进行身份验证;身份签名验证器,用于解析用户的身份签名,以及从所述存储装置查询用户信息验证该身份签名。
所述的验证系统进一步包括权限控制器,用于根据用户登录方式确定登录用户的访问权限。
本发明有益效果如下1、本发明在系统中引入用户身份映射关系实现系统间的用户身份映射,通过分布式的身份签名生成器与身份签名验证器实现相互信任系统之间的单次登录,不需要引入集中式的身份验证系统。而身份签名生成器与身份签名验证器是对系统的简单扩充,不需要修改原有的身份验证系统。因此,与现有技术的集中式身份验证系统相比,本发明的技术方案不仅容易实现,而且也易于维护管理;同时,避免了集中式身份验证系统引发的潜在性能瓶颈与单点故障问题,以及传统单次登录方法和系统的实施成本与技术风险。
2、由于本发明在系统中引入用户身份映射关系,系统用户集之间仍然保持相对独立,两者间的映射关系可以根据需求灵活地建立和解除。
3、本发明通过安全的身份签名生成与验证算法实现了真实、完整、防否认与防重播的单次登录,其安全性能够满足电子商务等对安全性要求较高的网站系统的需求。通过应需生成身份签名的单次登录流程实现了签名生成与验证次数的最少化,达到了快速、便捷的设计目标。


图1为现有技术在网站系统间实现单次登录的示意图;图2为本发明实施例中实现单次登录的系统结构示意图;图3、图4为本发明实施例中在两个网站系统间实现单次登录的流程图。
具体实施例方式
本实施例主要以在互联网中提供电子商务应用的网站系统A(以下简称网站A)和网站B(以下简称网站B)之间实现单次登录为例对本发明的实现进行详细说明。
参阅图2所示,网站A和网站B是两个位于互联网任何位置的独立的网站,位于两个不同的网络域A和网络域B中。当然,网站A和网站B也可以位于同一个网络域中。网站A有自己的用户群,其包含用户信息的用户库A保存在网站A的存储装置20中;网站B也有自己的用户群,包含用户信息的用户库B存储在网站B的存储装置30中。网站A的用户通过身份验证装置21的身份验证之后,可以访问网站A的资源。网站B的用户通过身份验证装置31的身份验证之后,可以访问网站B的资源。这是现有互联网上典型的两个独立运营的网站的用户管理与身份验证方式。
在本发明中,网站A与网站B建立了合作关系后,在网站A建立网站A/B用户映射关系表。用户C同时为网站A和网站B的用户,在网站A,其身份是CA,在网站B,其身份是CB,则在网站A/B用户映射关系表中有这样一项CA→CB,表示网站A中身份为CA的用户在网站B的身份是CB。用户登录网站A后,根据其身份CA即可获得用户在网站B的身份CB。用户的身份CA、CB可以是用户身份标识(即身份ID),当然,还可增加用于验证或控制的附加信息。
网站A中还包括身份签名生成器22,如果用户C在网站A已登录,身份为CA,则身份签名生成器22使用网站A和网站B约定的签名算法和签名密钥对用户在网站B的身份CB进行签名。
网站B中还包括身份签名验证器32,当用户请求中包含在网站A生成的身份签名时,身份签名验证器32解析身份签名,并验证身份签名的真实性、完整性和有效性,当验证通过之后,网站B就可以得知用户在网站B的身份,为用户建立恰当的角色。身份签名验证器32验证身份信息时,根据请求中用户的身份ID从保存的用户身份信息中取得完整的用户信息。如果用户身份ID无效,或者对应的用户不允许登录(比如状态不对,或者在黑名单中),则身份签名验证失败,则不会允许用户登录。
网站B中进一步包括权限控制器33,该权限控制器33根据用户登录方式,即是直接从本站登录还是从可信网站自动登录,决定用户对网站B资源的访问权限。权限控制器33在决定用户的访问权限时,还可从存储装置30中读取需要的用户信息。用户登录并建立会话后,在保存的会话信息中记录有用户的登录方式,因此,权限控制器33可以从会话信息中确定用户的登录方式。例如,网站A为C2C网站,网站B为支付网站,用户从C2C网站单次登录到支付网站时,权限控制器33可以只允许用户处理它在C2C网站上的交易,而不允许用户通过这种登录方式在支付网站上处理账务和其它网站上的交易。由于支付网站一般在安全性等级上要高于C2C网站,因此,通过这种方式,可以在易用性和安全性之间取得较好的平衡一即使用户在C2C网站上的密码被盗,受到影响的也只是用户与该C2C网站相关的业务。
在网站A中,身份验证装置21与身份签名生成器22可以为相互独立的实体,也可以为同一实体;在网站B中,身份验证装置31与身份签名验证器32可以为相互独立的实体,也可以为同一实体。
在网站A与网站B之间实现单次登录是通过身份签名来保证的,身份签名算法的安全性是单次登录安全性的关键,因此,需要满足对身份签名的真实性、完整性、防否认和防重播的安全要求。
真实性,是指身份签名中包含的网站B的用户身份信息及其它附加信息确实来自于网站A。
完整性,是指身份签名在传输过程中没有被第三方修改过。
防否认,是指除了网站A外,网站B以及其它任何第三方都无法制造出有效的身份签名,因此如果发生与安全相关的纠纷,网站A无法否认该身份签名是由自己生成的。
防重播,是指一个身份签名只能使用一次,用过之后该身份签名就不再有效。这样,第三方就无法通过窃听身份签名并重播该身份签名登录网站B。
为了实现上述真实性、完整性和防否认的安全性要求,可采用基于公钥体制的签名算法。即在网站A和网站B之间约定一个公钥、密钥对,密钥由网站A保管,对包括网站B在内的任何其它实体都保密;与该密钥对应的公钥是公开的,并由网站B知晓。当进行身份签名时,网站A中的身份签名生成器22使用公钥签名算法,利用密钥对用户在网站B的身份进行签名。当网站B的身份签名验证器32对身份签名验证时,使用公钥签名算法利用公钥对身份签名的真实性、完整性进行校验。同时,网站B在日志中记录通过校验的身份签名,以备发生安全纠纷时作为证据,防止网站A否认进行过相关身份签名。
为了实现防重播性,采用的身份签名算法要求在身份验证信息中包含时间戳,并对时间戳与用户身份一起签名;网站B可以通过该时间戳判断身份签名的真实性。其利用时间戳的方式可以有以下两种1、当网站B中的身份签名验证器进行身份签名验证时,将本次身份签名中的时间戳与该用户上一次的身份签名中的时间戳进行比较。由于同一用户对网站B的两次访问请求的时间戳总是递增的,因此,如果本次身份签名中的时间戳比上一次的时间戳旧(即时间上早于前一次)或者两者相同,说明本次身份签名是一个重播请求,则身份签名验证失败。
2、网站A和网站B约定时间戳的有效期限,比如说在1分钟内有效。当网站B收到身份签名后根据时间戳所指示的时间和当前时间比较即可确定该身份签名的有效性。这样,即使签名泄露,也只有1分钟的有效期。
可采用的身份签名和验证算法并不局限于使用DSA(Digital SignatureAlgorithm)等公钥体制的签名算法。如果网站A和网站B之间足够信任,不需要防否认机制,则可以采用密钥体制对身份信息和时间戳进行加密,并传输密文串的方式实现身份签名的真实性、完整性和防重播性;或者,可以采用更简单的混淆算法SHA1(Secure Hash Algorithm(version 1.0))或者MD5(Message Digest(version 5))等对身份信息和时间戳进行签名。采用混淆算法时通过双方约定混淆算法的种子,从而可以保证第三方无法生成有效的身份签名。
参阅图3所示,网站A主动为用户生成签名实现自动登录网站B的过程如下步骤300,用户C请求登录网站A,并输入用于验证身份的身份信息(如用户名和密码)。
步骤301,网站A中的身份验证装置21从存储装置20的用户库中读取该用户的信息,对用户提供的身份信息进行验证。
步骤302,对用户C验证成功,用户C访问网站A的资源。
步骤303,网站A检测到用户C需要访问网站B(如用户C请求了网站A中需要由网站B提供服务的资源时),身份签名生成器22从网站A/B身份映射关系表中读取用户C在网站B的身份信息,并使用与网站B约定的签名算法对用户在网站B的身份和其它附加信息(如时间戳等)进行签名,将身份签名附加在对网站B的请求参数中。
步骤304,将包含身份签名的访问请求定向到网站B。在请求中标识用户C来自网站A。标识的方式可以是以不同的子域名,也可以是以附加参数的方式。
步骤305,网站B中的身份签名验证器32利用与网站A约定的算法解析身份签名,并验证身份签名的有效性,如果无效,则拒绝用户访问网站B中用户请求的资源,如果有效,进行步骤306。
步骤306,身份签名有效,说明用户在网站B所信任的网站A已得到身份验证,根据身份签名中包含的用户在网站B的身份标识为用户建立会话,以及在日志中记录身份签名。
步骤307,权限控制器33进一步对用户C进行权限检查,如果权限检查许可,则允许用户访问所请求的资源,否则,不允许访问请求的资源。
上述单次登录流程只需要执行一次。在用户与网站B的后续会话中,不需要再进行单次登录,用户可以直接访问网站B的授权资源。
在本发明实施例中,可以由网站B在确定用户C需要单次登录时向网站A发起身份验证请求,而不是每次用户C从网站A访问网站B时都主动进行签名,这样可以大大减少身份签名与身份验证的次数,避免重复身份签名生成与身份签名验证带来的运算开销、身份签名日志存储开销以及身份签名泄露的风险。这样的一个单次登录处理过程如图4所示步骤400,用户C请求访问网站B,在请求中标识自己来自网站A。标识的方式可以是以不同的子域名,也可以是以附加参数的方式。
步骤401,网站B判断用户是否已经在本网站登录(或者已通过网站A单次登录),如果是,则进行步骤407,否则进行步骤402。
步骤402,网站B将用户C的请求重定向到网站A,在重定向请求中带参数标识需要网站A提供身份验证和身份签名,并包含用户请求访问的网站B的资源。
步骤403,网站A判断用户C已在本网站登录,并根据参数标识确定用户请求身份签名后,由身份签名生成器22从网站A/B身份映射关系表中读取用户C在网站B的身份信息,并使用与网站B约定的签名算法对用户在网站B的身份和其它附加信息(如时间戳等)生成身份签名。
对于用户未先登录网站A的情况,在该步骤中网站A会要求用户提交在本网站的用户名及密码,由身份验证装置21对其进行验证。
步骤404,将身份签名附加在对网站B的请求参数中,并将用户C的请求重定向回网站B。
步骤405,网站B中的身份签名验证器32利用与网站A约定的算法解析身份签名,并验证身份签名的有效性,如果无效,则拒绝用户访问网站B中用户请求的资源,否则,进行步骤406。
步骤406,身份签名有效,说明用户在网站B所信任的网站A已得到身份验证,根据身份签名中包含的用户在网站B的身份标识为用户建立会话,以及在日志中记录身份签名。
步骤407,权限控制器33进一步对用户C进行权限检查,如果权限检查许可,则允许用户访问所请求的资源,否则,不允许访问请求的资源。
综上可知,在网站A引入网站A/B用户身份映射表实现网站A与网站B之间的身份映射,避免了引入集中式的用户管理系统带来了管理风险和技术风险。网站A与网站B的用户集之间仍然保持相对独立,两者间的映射关系可以应需灵活地建立和解除。
通过分布式的身份签名生成器与身份签名验证器实现相互信任网站之间的单次登录,不需要引入集中式的身份验证系统,避免了集中式身份验证系统引发的潜在性能瓶颈与单点故障问题。而身份签名生成器与身份签名验证器是对网站系统的简单扩充,与集中式身份验证系统相比,它不需要修改网站原有的身份验证系统,避免了传统单次登录方法的实施成本与风险。
通过安全的身份签名生成与验证算法实现了真实、完整、防否认与防重播的单次登录,其安全性能够满足电子商务等对安全性要求很高的网站的需求。而通过应需生成身份签名的单次登录流程实现了签名生成与验证次数的最少化,达到了快速、便捷的设计目标。
虽然本实施例仅以网站A与网站B为例进行说明,但本发明并不限于此。如,网站A除了建立网站A/B用户身份映射表,还可以与网站C建立网站A/C用户身份映射表。同样的,网站B也可以建立网站B/C用户身份映射表来实现与网站C之间的单次登录(即网站C与多个网站之间具有合关系),甚至网站B中还可建立B/A用户身份映射表。但任意两个网站之间实现单次登录的处理过程与上述同理。
虽然本实施例以提供电子商务应用的网站系统为例进行说明,但并不限于此,本发明同样适用于需要通过验证用户身份才能访问系统资源的其他任何网络系统、通信系统等,如即时通信系统。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种在系统间实现单次登录的方法,其特征在于,包括如下步骤第一系统根据本系统保存的用户身份映射关系,获取已登录用户在第二系统中的身份信息并生成身份签名;将所述身份签名携带在所述用户请求登录第二系统的请求消息中,由第二系统根据该身份签名对用户进行验证。
2.如权利要求1所述的方法,其特征在于,第一系统获知已登录本系统的用户需要访问第二系统时,生成所述身份签名。
3.如权利要求1所述的方法,其特征在于,由第二系统将用户的登录请求重定向到第一系统并标识请求身份签名,第一系统根据请求生成所述身份签名并将该登录请求重定向到第二系统。
4.如权利要求3所述的方法,其特征在于,第一系统在确定所述用户未登录本系统时,进一步要求用户提供身份信息以验证该用户。
5.如权利要求1所述的方法,其特征在于,在携带身份签名的请求消息中进一步标识该用户来自第一系统;第二系统根据标识解析所述身份签名。
6.如权利要求5所述的方法,其特征在于,第一系统采用公钥体制签名算法、密钥体制签名算法或者混淆算法生成所述身份签名;第二系统采用相应的算法解析所述身份签名。
7.如权利要求1至6之一项所述的方法,其特征在于,在生成身份签名过程中加入时间戳;所述第二系统利用该时间戳验证所述身份签名的有效性。
8.如权利要求7所述的方法,其特征在于,第二系统通过比较同一用户的本次访问请求与前一次访问请求的时间戳确定所述身份签名的有效性;或者,通过比较时间戳所表示的时间与约定的有效时间确定所述身份签名的有效性。
9.如权利要求7所述的方法,其特征在于,所述第二系统根据所述身份签名对用户验证成功并允许用户登录后,进一步控制该用户的访问权限。
10.如权利要求7所述的方法,其特征在于,所述第二系统根据所述身份签名对用户验证成功并允许用户登录后,进一步在日志中记录所述身份签名。
11.一种验证系统,其特征在于,包括存储装置,用于保存本系统的用户信息,以及保存用户在多个系统的身份信息之间的映射关系;身份验证装置,用于从所述存储装置获取用户信息对请求登录的用户进行身份验证;身份签名生成器,用于从所述存储装置获取已登录本系统的用户在其他系统的身份信息生成身份签名。
12.一种验证系统,其特征在于,包括存储装置,用于保存本系统的用户信息;身份验证装置,用于从所述存储装置获取用户信息对请求登录的用户进行身份验证;身份签名验证器,用于解析用户的身份签名,以及从所述存储装置查询用户信息验证该身份签名。
13.如权利要求12所述的验证系统,其特征在于,该验证系统进一步包括权限控制器,用于根据用户登录方式确定登录用户的访问权限。
全文摘要
本发明公开了一种在系统间实现单次登录的方法,以解决现有技术中在系统间实现单次登录存在实现技术难度大和管理困难的问题;该方法由第一系统根据本系统保存的用户身份映射关系,获取已登录用户在第二系统中的身份信息并生成身份签名;将所述身份签名携带在所述用户请求登录第二系统的请求消息中,由第二系统根据该身份签名对用户进行验证。本发明还同时公开了一种验证系统。
文档编号H04L9/32GK1835438SQ200610065558
公开日2006年9月20日 申请日期2006年3月22日 优先权日2006年3月22日
发明者吴泳铭, 钱志龙, 程立 申请人:阿里巴巴公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1