基于Token的SSO认证系统的制作方法

文档序号:7953904阅读:473来源:国知局
专利名称:基于Token的SSO认证系统的制作方法
技术领域
本发明涉及认证系统,尤其涉及一种通过网络进行的基于Token的SSO认证系统。
背景技术
一般应用在登录的时候,客户端会将用户名和密码发送到登录服务器进行验证,验证成功之后,就在客户端和登录服务器之间建立了一个会话,在这个会话维持期间,用户的本次登录就将是有效的。当客户端需要连接其他服务器的时候,服务器会去确认这个会话,如果会话存在,则允许后续操作,会话无效,则拒绝操作。
这种使用会话来实现的单点登录一般局限在同一个应用里面或者小范围之内,游戏一般都是以分区,分服务器的方式来限制客户端的数量。如果一个大的应用采用类似模式,那么对会话服务器的容量要求,性能,稳定性,扩展性都将是一个巨大的考验,而基于Token的单点登录(SSOsingle sign on)认证系统就可以利用PKI(Public Key Infrastructure,公钥基础设施)方式,很好地将单点压力分散到了一个分布式的系统中,从而提供一种安全、便捷的网络用户身份认证方式。

发明内容
本发明要解决的技术问题是提供一种基于Token的SSO认证系统,该系统能进行安全、便捷的网络用户身份认证。
为了解决上述技术问题,本发明采用如下技术方案一种基于Token的SSO认证系统,它包括passport服务器,与SSO客户端组件相连接,用于对客户端提供认证服务;SSO客户端组件,与passport服务器和客户端相连接,用于将认证信息从客户端发送到Passport服务器进行认证,并为认证成功的客户获取登录凭证;应用服务器端验证组件,与客户端相连接,用于验证客户端递交的登录凭证。
由于采用上述技术方案,本发明的基于Token的SSO认证系统能确保网络交互的安全性,并通过使用动态密码进行身份认证,有效提高了用户身份认证的安全性,也提高了系统的整体安全性,而且分担了集中式认证的负担,有利于产品整合。


图1是本发明的SSO网络架构图;图2是本发明的单点登录的认证和登录流程图;图3是本发明的客户端SSO的传递流程图。
具体实施例方式
下面结合附图和具体实施方式
对本发明做进一步详细说明。
本发明的基于Token的SSO认证系统具有SSO的PKI体系网络架构(图1),其中,Token是认证凭据,用于证明用户在某个时刻被Passport(通行证)服务器认证成功,Token包含了用户本次的认证信息,这些认证信息使用对称密钥KEYapp加密并且使用Passport服务器的私钥SK签名;SK是Passport服务器用于对Token信息进行签名的私钥;KEYapp是Passport用于对Token信息进行加密的密钥;SessionKey(会话密钥)是用户在认证成功后由Passport生成,并且被发送到客户端,是客户端用于生成登录凭证的密钥。
本发明的基于Token的SSO认证系统包括passport服务器、SSO客户端组件及应用服务器端验证组件,其中,SSO客户端组件分别与passport服务器和应用服务器端验证组件相连接。
所述SSO客户端组件包括认证接口、获取Token和加密串接口、注销接口、重登陆接口、获取错误信息接口以及获取用户ID接口,这些接口的功能如下(1)认证接口该接口是用户使用用户名和密码调用组件,组件去Passport服务器验证,如果验证成功,返回一个访问密钥(AccessKey),拥有AccessKey的应用程序就能通过组件获取认证数据包的服务。输入参数用户的PT帐号、PT密码、用户密宝,输出参数访问密码。
(2)获取Token和加密串接口只要提供正确的PtId和AccessKey,该接口组件就会为客户端加密生成认证信息,输入参数用户的PT帐号、访问密码、希望访问的应用ID号、应用服务器时间,输出参数生成的认证数据和用户的Token。客户端用生成的认证数据(EncryptData)和Token到应用服务器获取需要的服务,如果AccessKey输入错误,组件将拒绝服务5秒钟。
(3)注销接口只要提供正确的PtId和AccessKey,该接口组件就会为该用户注销SSO的信息。
(4)重登陆接口用户输入认证信息后去PassportServer验证,认证成功,客户端可以使用原来的AccessKey来访问该接口组件,输入参数用户的PT帐号、访问密码、PT密码及用户密宝。
(5)获取错误信息接口该接口获取错误描述信息。
(6)获取用户ID接口该接口获取用户所有数字ID和PT帐号对应关系。输入参数用户的数字ID或者pt帐号、帐号类型、访问密码,输出参数pt帐号、基础数字ID(它是各个系统之间用于标示用户的唯一数字ID,不可变)及用户数字ID(它是用户用于登录的数字ID,可变)。
所述应用服务器端验证组件包括配置文件、初始化接口及验证签名接口。该组件的配置文件为SignVerifier.ini,配置项如下所列TOKEN_EXPIRETIME=28800000,Token的过期时间ms(默认8小时);TIME_INTERVAL=600000,两次认证的时间间隔ms(默认1分钟,此处设置10分钟);TIME_PERMIT_ERROR=600000,服务器组之间的最大时间误差,例如Passport服务器和Avatar服务器的时间误差(默认10分钟);APPID=IM,应用服务器类型(此处是IM服务器);
DEBUG=Y,调试标志(如果Y,忽略认证间隔时间和Token过期时间的判断;如果N,严格执行配置文件的过期时间)。
应用服务器端验证组件的初始化接口包括签名公钥文件、DES3密钥文件,返回值,非零为失败,通过GetErrorDes-cription获取错误描述。
应用服务器端验证组件的验证签名接口包括加密数据、Token信息、用户名、Token签发时间、SessionKey信息、用户IP地址、用户内部数字ID(不会改变)、用户特殊数字ID(用户可以更改),返回值,非零为失败,通过GetErrorDescription获取错误描述。
图2所示为本发明的单点登录的认证和登录流程,SSO组件在认证成功之后,会将Token以及SessionKey加密保存在本地内存中,然后随机产生一个AccessKey与之相关联,并返回给客户端。然后客户端就可以通过这个AccessKey来使用SSO组件内的保密信息(Token+SessionKey)来生成登录凭证。认证流程中,用户在客户端输入用户名、静态密码和动态密码之后点认证按钮,客户端会调用SSO客户端组件,组件通过SSL(secure sockets layer,加密套解字协议层)通讯方式将认证信息安全发送到Passport服务器进行身份认证,如果认证成功,则返回SessionKey和Token,SSO客户端组件则将这两个信息加密保存在内存中,并且返回AccessKey给客户端,表明本次认证成功。登录流程中,当用户需要登录某一个应用的时候,首先获取需要登录的服务器时间,调用客户端SSO组件,请求登录凭证(可以理解为门票),客户端SSO组件则利用SessionKey加密登录信息附上Token生成登录凭证,客户端将登录凭证发送到登录服务器进行验证,验证成功则登录完成。
单点登录客户端认证成功之后,将获得访问SSO组件的AccessKey,拥有这个AccessKey的客户端可以多次使用组件生成登录凭证,达到访问不同服务器的功能(图3)。当使用单点登录客户端启动另一个游戏的时候,可以通过命令行传递的方式将用户名以及AccessKey传递给游戏客户端,则游戏客户端也可以使用AccessKey访问客户端SSO组件,实现在多个客户端上的单点登录。
应用服务器需要向客户端发布一个获取本地服务器时间的接口,在C++中,可使用_time64函数获取,获取之后再乘以1000转化成毫秒格式。所有应用服务器和Passport服务器之间都需要做时间同步,且应用服务器端需要有解密Token的对称密钥和验证Token的公钥,应用服务器使用SignVerifier组件验证客户端递交的Token以及加密串的合法性。
应用服务器端验证组件位于应用服务器端,用于验证客户端递交的登录凭证是否合法。首先,验证Token签名是否正确,再解密Token获取Token信息,然后判断Token是否过期。接着,使用SessionKey解密EncryptData,再比较加密串的UserID和Token的UserID是否一致,还比较ServerTime是否在允许范围之内,以及比较AppID是否和当前应用一致。
权利要求
1.一种基于Token的SSO认证系统,其特征在于,它包括passport服务器,与SSO客户端组件相连接,用于对客户端提供认证服务;SSO客户端组件,与passport服务器和客户端相连接,用于将认证信息从客户端发送到Passport服务器进行认证,并为认证成功的客户获取登录凭证;应用服务器端验证组件,与客户端相连接,用于验证客户端递交的登录凭证。
2.如权利要求1所述的基于Token的SSO认证系统,其特征在于,所述SSO客户端组件包括认证接口、获取Token和加密串接口、注销接口、重登陆接口、获取错误信息接口以及获取用户ID接口。
3.如权利要求1所述的基于Token的SSO认证系统,其特征在于,所述应用服务器端验证组件包括配置文件、初始化接口及验证签名接口。
4.如权利要求1所述的基于Token的SSO认证系统,其特征在于,所述pas sport服务器可支持静态认证和动态认证。
5.如权利要求1所述的基于Token的SSO认证系统,其特征在于,所述passport服务器可为认证成功的用户颁发由其签名的Token和sessionkey。
6.如权利要求1所述的基于Token的SSO认证系统,其特征在于,所述SSO客户端组件通过SSL通讯方式将认证信息发送到Passport服务器进行认证。
7.如权利要求1或5所述的基于Token的SSO认证系统,其特征在于,所述SSO客户端组件在认证成功后,将Token和sessionkey加密保存于内存,并产生AccessKey返回给客户端。
8.如权利要求7所述的基于Token的SSO认证系统,其特征在于,认证成功后,所述客户端获取需要登录的服务器时间,再通过AccessKey使用SSO客户端组件内的Token和sessionkey生成登录凭证。
9.如权利要求7或8所述的基于Token的SSO认证系统,其特征在于,所述客户端获取AccessKey后,可多次使用SSO客户端组件生成登录凭证,以访问不同服务器。
全文摘要
本发明公开了一种基于Token的SSO认证系统,它包括passport服务器,与SSO客户端组件相连接,用于对客户端提供认证服务;SSO客户端组件,与passport服务器和客户端相连接,用于将认证信息从客户端发送到Passport服务器进行认证,并为认证成功的客户获取登录凭证;应用服务器端验证组件,与客户端相连接,用于验证客户端递交的登录凭证。本发明基于Token的SSO认证系统能有效提高网络交互的安全性和用户身份认证的安全性,且分担了集中式认证的负担,有利于产品整合。
文档编号H04L29/06GK101060520SQ20061002591
公开日2007年10月24日 申请日期2006年4月21日 优先权日2006年4月21日
发明者钱宇杰 申请人:盛趣信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1