本发明涉及计算机技术领域,特别涉及一种单点登录方法及系统、统一认证系统。
背景技术:
随着企业信息化程度的不断提高,各种第三方业务系统随之增加,一个用户可能需要登录不同的第三方业务系统。
目前,用户在登录不同的第三方业务系统时,每一次均需要输入相应的用户名和密码等。可见,操作比较繁琐,用户体验较差。
技术实现要素:
本发明实施例提供了一种单点登录方法及系统、统一认证系统,简化登录第三方业务系统的操作过程,提高用户体验。
第一方面,本发明实施例提供了一种单点登录方法,应用于维护至少一个第三方业务系统的统一认证系统,包括:
接收门户系统发送的当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id;
生成单点令牌ssotoken,并保存;
获取预设的与所述目标第三方业务系统的id相对应的统一资源定位符url地址,并将所述ssotoken发送给所述url地址;
接收所述目标第三方业务系统发送的认证请求;
判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致,若是,则允许所述当前用户访问所述目标第三方业务系统。
优选地,
在所述接收所述目标第三方业务系统发送的认证请求之后,且在所述判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致之前,进一步包括:
判断预先针对所述至少一个第三方业务系统分别设置的应用程序编程接口api账号中是否存在所述认证请求中携带的api账号;
若是,则执行所述判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致;
若否,则结束当前流程。
优选地,
在所述接收门户系统发送的当前用户对应的单点登录请求之后,且在所述生成ssotoken,并保存之前,进一步包括:
判断已保存的至少一个访问令牌accesstoken中是否存在所述单点登录请求中携带的accesstoken;
若是,则执行所述生成ssotoken,并保存;
若否,则结束当前流程。
优选地,
进一步包括:设置所述至少一个第三方业务系统中的每一个所述第三方业务系统分别对应的sso参数;
所述允许所述当前用户访问所述目标第三方业务系统,包括:
获取所述目标第三方业务系统对应的目标sso参数;
根据所述目标sso参数跳转至所述目标第三方业务系统的目标界面。
优选地,
所述允许所述当前用户访问所述目标第三方业务系统,包括:
根据所述ssotoken获取预设的所述当前用户登录所述目标第三方业务系统所需的身份登录信息;
利用所述身份登录信息跳转至所述目标第三方业务系统的相应界面。
第二方面,本发明实施例提供了一种统一认证系统,包括:第一接收单元、生成单元、获取单元、第二接收单元和第一判断单元,其中,
所述第一接收单元,用于接收门户系统发送的当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id;
所述生成单元,用于生成单点令牌ssotoken,并保存;
所述获取单元,用于获取预设的与所述目标第三方业务系统的id相对应的统一资源定位符url地址,并将所述ssotoken发送给所述url地址;
所述第二接收单元,用于接收所述目标第三方业务系统发送的认证请求;
所述第一判断单元,用于判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致,若是,则允许所述当前用户访问所述目标第三方业务系统。
优选地,
进一步包括:第二判断单元;
所述第二判断单元,用于在所述第二接收单元接收所述目标第三方业务系统发送的认证请求之后,且在所述第一判断单元判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致之前,判断预先针对所述至少一个第三方业务系统分别设置的应用程序编程接口api账号中是否存在所述认证请求中携带的api账号;若是,则触发所述第一判断单元,若否,则结束当前流程。
优选地,
进一步包括:第三判断单元;
所述第三判断单元,用于在所述第一接收单元接收门户系统发送的当前用户对应的单点登录请求之后,且在所述生成单元生成ssotoken,并保存之前,判断已保存的至少一个访问令牌accesstoken中是否存在所述单点登录请求中携带的accesstoken;若是,则触发所述生成单元,若否,在结束当前流程。
优选地,
进一步包括:设置单元;
所述设置单元,用于设置所述至少一个第三方业务系统中的每一个所述第三方业务系统分别对应的sso参数;
所述第一判断单元,用于在判断出发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken一致时,获取所述目标第三方业务系统对应的目标sso参数;根据所述目标sso参数跳转至所述目标第三方业务系统的目标界面。
优选地,
所述第一判断单元,用于在判断出发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken一致时,根据所述ssotoken获取预设的所述当前用户登录所述目标第三方业务系统所需的身份登录信息;利用所述身份登录信息跳转至所述目标第三方业务系统的相应界面。
第三方面,本发明实施例提供了一种单点登录系统,包括:上述任一实施例所述的统一认证系统、门户系统以及至少一个第三方业务系统,其中,
所述门户系统,用于向所述统一认证系统发送当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id;
所述至少一个第三方业务系统中的每一个所述第三方业务系统,用于接收所述统一认证系统发送的ssotoken,并向所述统一认证系统发送认证请求。
本发明实施例提供了一种单点登录方法及系统、统一认证系统,该方法应用于维护至少一个第三方业务系统的统一认证系统,用户当需要登录某第三方业务系统时,只需登录一次门户系统即可,然后通过门户系统发送相应的单点登录请求,然后统一认证系统会接收到相应的单点登录请求,并生成相应的ssotoken,然后通过验证该ssotoken即可确定出是否允许该当前用户访问相应的第三方业务系统,整个过程用户只需登录一次门户系统,之后通过ssotoken实现其他第三方业务系统的访问,可见,简化了登录第三方业务系统的操作流程,提高了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种单点登录方法的流程图;
图2是本发明另一个实施例提供的一种单点登录方法的流程图;
图3是本发明一个实施例提供的一种统一认证系统的结构示意图;
图4是本发明另一个实施例提供的一种统一认证系统的结构示意图;
图5是本发明又一个实施例提供的一种统一认证系统的结构示意图;
图6是本发明再一个实施例提供的一种统一认证系统的结构示意图;
图7是本发明一个实施例提供的一种单点登录系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种单点登录方法,应用于维护至少一个第三方业务系统的统一认证系统,该方法可以包括以下步骤:
步骤101:接收门户系统发送的当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id。
步骤102:生成单点令牌ssotoken,并保存。
步骤103:获取预设的与所述目标第三方业务系统的id相对应的统一资源定位符url地址,并将所述ssotoken发送给所述url地址。
步骤104:接收所述目标第三方业务系统发送的认证请求。
步骤105:判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致,若是,则执行步骤106,否则结束当前流程;
步骤106:允许所述当前用户访问所述目标第三方业务系统。
本发明实施例提供了一种单点登录方法,该方法应用于维护至少一个第三方业务系统的统一认证系统,用户当需要登录某第三方业务系统时,只需登录一次门户系统即可,然后通过门户系统发送相应的单点登录请求,然后统一认证系统会接收到相应的单点登录请求,并生成相应的ssotoken,然后通过验证该ssotoken即可确定出是否允许该当前用户访问相应的第三方业务系统,整个过程用户只需登录一次门户系统,之后通过ssotoken实现其他第三方业务系统的访问,可见,简化了登录第三方业务系统的操作流程,提高了用户体验。
在本发明一个实施例中,在所述步骤104之后,且在所述步骤105之前,进一步包括:判断预先针对所述至少一个第三方业务系统分别设置的应用程序编程接口api账号中是否存在所述认证请求中携带的api账号;若是,则执行所述判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致;若否,则结束当前流程。
上述实施例中,在维护各个第三方业务系统时,为了提高安全性,会为每一个第三方业务系统建立对应的api账号,这样,当接收到某第三方业务系统的认证请求时,需判断其对应的api账号是否在预先建立的各个api账号中,只有当判断出在时,说明该第三方业务系统为合法的业务系统,因此接下来可允许其调用提供的认证接口,从而通过该认证接口能够验证出实际发送给该第三方业务系统的ssotoken与该第三方业务系统实际接收到的ssotoken是否一致。
通过建立每一个第三方业务系统分别对应的api账号,然后根据这些建立的合法的api账号判断相应的第三方业务系统的合法性,从而能够避免一些不合法的第三方业务系统窃取所维护的合法的第三方业务系统的数据信息以及用户的身份信息等等,这对于保护数据的安全性具有重要意义。
在本发明一个实施例中,在所述步骤101之后,且在所述步骤102之前,进一步包括:判断已保存的至少一个访问令牌accesstoken中是否存在所述单点登录请求中携带的accesstoken;若是,则执行所述生成ssotoken,并保存;若否,则结束当前流程。
上述实施例中,在当前用户首次登录门户系统时,会接收到门户系统发送的该当前用户对应的身份信息,通过与预设的合法的身份信息进行认证比对,能够确定出该当前用户是否合法,那么当身份认证通过时,则会为该用户颁发带有accesstoken的认证数据,并保存该accesstoken,那么之后该当前用户想要访问某第三方业务系统时,则可将该accesstoken携带在发送的请求中,从而使得能够根据携带的accesstoken以及已保存的来确定出当前用户是否合法,进而确保用户信息以及所维护的第三方业务系统的数据信息的安全性。
通过为合法的用户颁发accesstoken,从而能够根据当前用户对应的请求中所携带的accesstoken来确定该当前用户的合法性,从而能够避免被不法的第三方窃取信息,保证了数据的安全性。
在本发明一个实施例中,进一步包括:设置所述至少一个第三方业务系统中的每一个所述第三方业务系统分别对应的sso参数;所述步骤105的具体实施方式,可包括:获取所述目标第三方业务系统对应的目标sso参数;根据所述目标sso参数跳转至所述目标第三方业务系统的目标界面。
上述实施例中,在维护各个第三方业务系统时,还会定义各个业务系统单点登录个性化sso参数,也即定义扩展的外部参数。例如,比如字段xxx取值query.xxx@url,第三方业务系统接收xxx参数,从而之后可直接跳转至相应的功能界面等等。除此之外,门户系统还可与第三方业务系统约定好参数传递方式(url、form表单等)、需要传递哪些参数、信息的加密算法。
在本发明一个实施例中,所述步骤105的具体实施方式,包括:根据所述ssotoken获取预设的所述当前用户登录所述目标第三方业务系统所需的身份登录信息;利用所述身份登录信息跳转至所述目标第三方业务系统的相应界面。
上述实施例中,可能有些第三方业务系统需要按照之前用户注册的登录方式进行登录,那么为了集中管理以及避免用户记住多个第三方业务系统的身份登录信息(如账号、密码等)等,则可将用户在每一个第三方业务系统中对应的身份登录信息进行统一维护,例如,有10个第三方业务系统,然后当前用户001在系统1中使用的身份信息为001a、在系统3中使用的身份信息为001c,假设当前用户对应的单点登录请求中携带有系统1的id,这样,可预先建立001分别和001a以及001c的映射关系,从而在验证ssotoken通过后,由于该ssotoken是根据相应的id以及用户信息等生成的,因此可根据该ssotoken获取到相应的业务系统3对应的身份信息001c,从而接下来通过该001c实现系统3的登录。
通过将各第三方业务系统中的账号集中管理,这样可以极大地降低各第三方业务系统维护管理成本和工作量,而且用户不必记住各第三方业务系统纷繁复杂的账号、密码,提高使用方便性,基于rsa非对称算法加密解密,传输过程中数据动态加密,防止暴力破解和回放,避免某第三方业务系统密码较弱导致安全隐患,提高第三方业务系统安全性。
下面将详细说明本发明实施例提供的一种单点登录方法,应用于维护至少一个第三方业务系统的统一认证系统,如图2所示,该方法可以包括如下步骤:
步骤201:接收门户系统发送的当前用户对应的单点登录请求;单点登录请求中携带有至少一个第三方业务系统中任一目标第三方业务系统的id。
在本发明实施例中,应预先维护至少一个第三方业务系统,也即应预先完成各个第三方业务系统的定义,具体的,可按照如下进行:
(1)、创建各个第三方业务系统。
(2)、设置各个第三方业务系统单点登录类型、单点登录url信息。
(3)、定义各个第三方业务系统单点登录个性化sso参数。
具体描述可如下表1所示:
表1
步骤202:判断已保存的至少一个访问令牌accesstoken中是否存在该单点登录请求中携带的accesstoken,若是,则执行步骤203,否则,结束当前流程。
步骤203:生成单点令牌ssotoken,并保存。
步骤204:获取预设的与目标第三方业务系统的id相对应的url地址,并将ssotoken发送给url地址。
步骤205:接收目标第三方业务系统发送的认证请求。
步骤206:判断预先针对至少一个第三方业务系统分别设置的api账号中是否存在认证请求中携带的api账号,若是,则执行步骤207,否则,结束当前流程。
在本发明实施例中,应预先将各第三方业务系统中的账号集中管理,具体的,可按照如下进行:
(1)、建立对应的api账号。
(2)、同步身份。
(3)、同步身份账号映射。
具体描述可如下表2所示。
表2
其中,在进行api验证时,涉及到的关键代码可如下:
dictionary<string,string>apiverifyresult=newdictionary<string,string>(stringcomparer.ordinalignorecase);
apiverifyresult=authenticationservice.verifyidentity(ssoapicode,ssoapipsd,systemid,null);
通过身份集成,降低了企业管理工作的重复,降低了企业管理工作成本。
步骤207:判断发送给目标第三方业务系统的所述ssotoken与目标第三方业务系统接收到的ssotoken是否一致,若是,则执行步骤208,否则,结束当前流程。
在本发明实施例中,第三方业务系统会通过相应的url地址接收到发送的ssotoken,之后需调用提供的api进行验证。调用接口验证通过之后,可以获取到该token对应的用户的信息,拿到该信息之后即可维护业务系统的用户信息状态。具体描述如下表3所示。
表3
其中,在验证ssotoken时,涉及到的关键代码可如下:
dictionary<string,string>reqreturnresult=newdictionary<string,string>{{"name","main"},{"code","main"},{"main.userpassword.password","auth"}};
ssoserviceservice=newssoservice(idminternetaddress,
apiverifyresult["accesstoken"]);
dictionary<string,string>returnresult=service.verifyssotoken(request["ssotoken"],reqreturnresult);
步骤208:允许当前用户访问目标第三方业务系统。
如图3所示,本发明实施例提供了一种统一认证系统,包括:第一接收单元301、生成单元302、获取单元303、第二接收单元304和第一判断单元305,其中,
所述第一接收单元301,用于接收门户系统发送的当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id;
所述生成单元302,用于生成单点令牌ssotoken,并保存;
所述获取单元303,用于获取预设的与所述目标第三方业务系统的id相对应的统一资源定位符url地址,并将所述ssotoken发送给所述url地址;
所述第二接收单元304,用于接收所述目标第三方业务系统发送的认证请求;
所述第一判断单元305,用于判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致,若是,则允许所述当前用户访问所述目标第三方业务系统。
在本发明一个实施例中,如图4所示,进一步包括:进一步包括:第二判断单元401;
所述第二判断单元401,用于在所述第二接收单元304接收所述目标第三方业务系统发送的认证请求之后,且在所述第一判断单元305判断发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken是否一致之前,判断预先针对所述至少一个第三方业务系统分别设置的应用程序编程接口api账号中是否存在所述认证请求中携带的api账号;若是,则触发所述第一判断单元,若否,则结束当前流程。
在本发明一个实施例中,如图5所示,进一步包括:第三判断单元501;
所述第三判断单元501,用于在所述第一接收单元301接收门户系统发送的当前用户对应的单点登录请求之后,且在所述生成单元302生成ssotoken,并保存之前,判断已保存的至少一个访问令牌accesstoken中是否存在所述单点登录请求中携带的accesstoken;若是,则触发所述生成单元,若否,在结束当前流程。
在本发明一个实施例中,如图6所示,进一步包括:设置单元601;
所述设置单元601,用于设置所述至少一个第三方业务系统中的每一个所述第三方业务系统分别对应的sso参数;
所述第一判断单元305,用于在判断出发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken一致时,获取所述目标第三方业务系统对应的目标sso参数;根据所述目标sso参数跳转至所述目标第三方业务系统的目标界面。
在本发明一个实施例中,所述第一判断单元,用于在判断出发送给所述目标第三方业务系统的所述ssotoken与所述目标第三方业务系统接收到的所述ssotoken一致时,根据所述ssotoken获取预设的所述当前用户登录所述目标第三方业务系统所需的身份登录信息;利用所述身份登录信息跳转至所述目标第三方业务系统的相应界面。
如图7所示,本发明实施例提供了一种单点登录系统,包括:上述任一实施例中所述的统一认证系统701、门户系统702以及至少一个第三方业务系统703,其中,
所述门户系统702,用于向所述统一认证系统701发送当前用户对应的单点登录请求;所述单点登录请求中携带有所述至少一个第三方业务系统中任一目标第三方业务系统的id;
所述至少一个第三方业务系统中的每一个所述第三方业务系统703,用于接收所述统一认证系统701发送的ssotoken,并向所述统一认证系统701发送认证请求。
综上,本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,该方法应用于维护至少一个第三方业务系统的统一认证系统,用户当需要登录某第三方业务系统时,只需登录一次门户系统即可,然后通过门户系统发送相应的单点登录请求,然后统一认证系统会接收到相应的单点登录请求,并生成相应的ssotoken,然后通过验证ssotoken即可确定出是否允许该当前用户访问相应的第三方业务系统,整个过程用户只需登录一次门户系统,之后通过ssotoken实现其他第三方业务系统的访问,可见,简化了登录第三方业务系统的操作流程,提高了用户体验。
2、在本发明实施例中,通过建立每一个第三方业务系统分别对应的api账号,然后根据这些建立的合法的api账号判断相应的第三方业务系统的合法性,从而能够避免一些不合法的第三方业务系统窃取所维护的合法的第三方业务系统的数据信息以及用户的身份信息等等,这对于保护数据的安全性具有重要意义。
3、在本发明实施例中,通过为合法的用户颁发accesstoken,从而能够根据当前用户对应的请求中所携带的accesstoken来确定该当前用户的合法性,从而能够避免被不法的第三方窃取信息,保证了数据的安全性。
4、在本发明实施例中,在维护各个第三方业务系统时,还可通过定义各个业务系统单点登录个性化sso参数,也即定义扩展的外部参数来直接跳转至相应的功能界面等等。除此之外,门户系统还可与第三方业务系统约定好参数传递方式(url、form表单等)、需要传递哪些参数、信息的加密算法。
5、在本发明实施例中,通过将各第三方业务系统中的账号集中管理,这样可以极大地降低各第三方业务系统维护管理成本和工作量,而且用户不必记住各第三方业务系统纷繁复杂的账号、密码,提高使用方便性,基于rsa非对称算法加密解密,传输过程中数据动态加密,防止暴力破解和回放,避免某第三方业务系统密码较弱导致安全隐患,提高第三方业务系统安全性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。