CN113660284A - 一种基于票据的分布式认证方法 - Google Patents
一种基于票据的分布式认证方法 Download PDFInfo
- Publication number
- CN113660284A CN113660284A CN202110990892.4A CN202110990892A CN113660284A CN 113660284 A CN113660284 A CN 113660284A CN 202110990892 A CN202110990892 A CN 202110990892A CN 113660284 A CN113660284 A CN 113660284A
- Authority
- CN
- China
- Prior art keywords
- session
- client
- authentication
- service
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
Abstract
本发明涉及一种基于票据的分布式认证方法,所述的分布式认证方法包括三个相互连接的物理层架构,分别为:1):应用或系统的客户端(APP/WEB)、2)应用或系统服务后端(APP‑SERVER)、3)认证服务系统(SSO);所述的应用或系统服务后端(APP‑SERVER)集成SDK包(sso‑client认证包);SDK包(sso‑client认证包)提供系统认证功能,包括内容如下:拦截校验本地用户会话、验证登录票据换取会话凭证、登出本地会话、本地会话管理。
Description
技术领域
本发明属于电子信息技术领域,尤其是涉及基于票据的分布式认证方法技术领域。
背景技术
早期的WEB应用都是把各自的服务代码打包成一个war包放入运行容器中来运行的,所有的功能、业务流程都是由这个war包来支持的,那面即使是同一个大环境下的各自模块。
单点登录(SingleSignOn,SSO),就是通过用户的一次登录操作后,即可通过授信的其他关联系统或应用软件的登录会话验证,同时这种实现也无需系统管理员对用户的登录状态进行过多人为干预,这也就意味着用户只需要登录一次即可在其被授予的权限范围内可以访问所有相互信任的应用系统或软件。这种方式极大地提高了用户的访问效率、系统的集成度,是目前比较流行的分布式系统用户认证授权方式。
现有的单点登录认证系统针对各系统的使用场景和需求有多种实现方式,最具代表性的一般有以下两种场景解决方案,分别为:
同域名下的单点登录,实现步骤:
a、用户访问客户端client-a时,访问请求中未携带登录凭证的,服务将重定向用户当前页面至CSA系统登录页面。
b、用户输入账号登录密码后,CSA系统会将登录会话(用户id和用户信息)保存,并使用浏览器cookie携带会话凭证重定向跳转回原来的客户端页面。
c、客户端client-a再次访问服务并提交登录凭证给服务后端A,由服务后端A使用该登录凭证到CSA系统去验证登录凭证的有效性,若响应为登录凭证有效则用户可以正常访问系统,若响应为登录凭证无效则重定向至CSA系统登录页面。
d、当用户访问客户端client-b时,因同域机制浏览器会使用相同的登录凭证访问服务后端B,由服务后端B使用该登录凭证到CSA系统去验证登录凭证的有效性,若响应为登录凭证有效则用户可以正常访问系统,若响应为登录凭证无效则重定向至CSA系统登录页面。
(1)不同域名下的单点登录,实现步骤:
a、用户访问客户端client-a时,访问请求中未携带登录凭证的,服务将重定向用户当前页面至CSA系统登录页面。
b、用户输入账号登录密码后,CSA系统会将登录会话(用户id和用户信息)保存,并携带会话票据ticket重定向跳转回原来的客户端页面。
c、客户端client-a接收到会话票据ticket后,递交会话票据ticket给服务后端A,由服务后端A使用该会话票据ticket到CSA系统去验证会话票据ticket的有效性。
d、CSA系统校验会话票据ticket的有效性,若为有效则响应服务后端A用户会话凭证,若无效则响应会话票据ticket失效信息。
e、服务后端A若接收到用户会话凭证,则响应给客户端client-a,由客户端client-a继续用户访问;服务后端A若接收到会话票据ticket失效信息,则服务将重定向用户当前页面至CSA系统登录页面。
f、当用户访问客户端client-b时,服务将重定向用户当前页面至CSA系统登录页面。因用户已在CSA系统登录过,CSA系统并携带会话票据ticket重定向跳转回原来的客户端页面。
g、服务后端B使用会话票据ticket向CSA系统获取用户会话凭证并响应客户端client-b。
现有的单点登录认证系统的解决方案确实解决了同域名分布式系统、不同域名分布式系统的用户会话验证业务,实现用户一次登录任意访问的场景需求。其具有以下优点:
a、系统整合实现环境依赖较小、系统开发语言无关性;
b、Server端与Client端均支持分布式部署,方便横向扩展和提高系统可用性
c、支持跨域应用接入
d、全部Server端与Client端实时共享用户会话,保持会话状态一致性
但现有方案也有一些不足的地方,包括以下几点:
a、现有的CSA系统识别用户会话依赖于Session和Cookie技术,浏览器使用Cookie是有数量和长度的限制的且不能跨域。
b、使用Cookie技术的分布式系统还需实现Session共享,Cookie-Session机制存在跨系统会话管理复杂、扩展性有限、容易遭受CSRF/XSS攻击情况。
c、客户端携带用户会话凭证访问服务端时,服务端都需要去CSA系统验证该会话凭证的有效性。
发明内容
本发明正是为了解决上述问题缺陷,提供一种基于票据的分布式认证方法。
本发明采用如下技术方案实现。
一种基于票据的分布式认证方法,本发明所述的分布式认证方法包括三个相互连接的物理层架构,分别为:
1)应用或系统的客户端(APP/WEB)、
2)应用或系统服务后端(APP-SERVER)、
3)认证服务系统(SSO);
所述的应用或系统服务后端(APP-SERVER)集成SDK包(sso-client认证包);SDK包(sso-client认证包)提供系统认证功能,包括内容如下:拦截校验本地用户会话、验证登录票据换取会话凭证、登出本地会话、本地会话管理;
所述的认证服务系统(SSO)运行具有用户授权认证,提供一种基于票据的单点认证方法,通过封装接口对外提供用户注册机制、用户登录机制、用户会话授信、用户信息更新、应用会话集中管理及本地管理功能;
所有的用户信息由设置的中台服务用户中心服务统一保存和管理;
所有接入集成认证服务系统(SSO)的应用或系统服务后端(APP-SERVER)由设置的中台服务应用中心统一保存和管理;
应用或系统服务后端(APP-SERVER)和客户端(APP/WEB)注册发布时,选择设置用户会话鉴权方式、会话有效期时长、用户数据授权范围信息;
应用或服务开发团队将从中台服务应用中心获取应用参数(appKey/secretKey)和客户端标识(endpoint Code);
集成的SSO客户端SDK包(sso-client认证包)的应用或系统服务后端(APP-SERVER)将共享用户信息作为用户一次注册多端访问的数据基础;
所述的分布式认证方法通过http协议请求获取及交换凭证的方式,使用户访问应用或系统前进行登录认证,在访问其他系统时交换获取新的凭证,实现授信系统间免登访问。
本发明所述的应用或系统服务后端(APP-SERVER)通过集成的SDK包(sso-client)获取用户认证票据ticket时,根据实际的系统或服务使用场景,在系统或服务注册时限定其会话使用范围,结合范围参数scope限定用户数据授权范围,实现系统内授信登录和满足第三方授权登录(OAUTH2.0)机制。
本发明所述的应用或系统服务后端(APP-SERVER)通过SDK包(sso-client)实现用户登录会话凭证的获取、验证。
本发明所述的客户端(APP/WEB)访问时通过从请求头中获取特定的会话认证标识判断用户是否登录、登录状态的有效期。
本发明所述的集成认证服务系统(SSO)生成的会话凭证采用JWT令牌机制,基于Token的鉴权机制是无状态的,该凭证本身是不包含用户信息或者会话信息的,那么系统也就无关用户从哪个客户端或服务获取会话凭证,为系统或应用的扩展提供便利。
本发明所述的集成SSO客户端SDK包(sso-client),其会话认证方法为,任何接入系统需要获取并创建用户会话时,统一路由跳转至集成认证服务系统(SSO)登录,SSO服务页面将携带一个标识用户的认证票据ticket返回到子系统页面;子系统页面获取认证票据ticket后传递给应用或系统服务后端(APP-SERVER),通过集成的SSO客户端SDK包(sso-client)向集成认证服务系统(SSO)验证票据有效性并返回用户信息,应用或系统服务后端(APP-SERVER)向客户端(APP/WEB)返回用户会话标识。
本发明所述的应用或系统服务后端(APP-SERVER),其判断用户会话方法为,客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起访问请求时,应用或系统服务后端(APP-SERVER)集成的SSO客户端SDK包(sso-client)会在请求链路上对请求做出拦截介入,SSO客户端SDK包(sso-client)过滤器从请求头中获取指定的会话标识;若无会话标识则返回用户未登录信息,客户端(APP/WEB)路由跳转至集成认证服务系统(SSO)统一完成登录授权操作;若有会话标识,则获取此会话标识,解析会话标识判断会话标识是否在有效期内;解析会话标识获取用户标识,使用用户标识在本地缓存中获取用户信息,判断是否存在有效的会话状态;当前请求的会话状态和用户信息绑定在当前执行线程和请求链路中。
本发明所述的集成SSO客户端SDK包(sso-client),其会话注销方法为,客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起特定请求路由,由集成的SSO客户端SDK包(sso-client)拦截会话注销请求,先注销本地会话和用户信息,再调取集成认证服务系统(SSO)会话注销接口,集成认证服务系统(SSO)根据应用或系统客户端的会话管理配置,判断是否需要注销全局会话和通知关联授信应用或服务注销本地会话。
本发明所述的集成SSO客户端SDK包(sso-client),其关联应用授信方法为,关联授信应用必须都是中台服务应用中心注册发布应用,由中台服务应用中心维护应用间的授信关系和授信范围;客户端A因业务需要要向客户端B跳转并实现用户免登验证时,由集成认证服务系统(SSO)完成授信应用间会话验证签发;应用或系统服务后端A先通过集成的SSO客户端SDK包(sso-client)能力,传递当前用户的会话认证和目标客户端标识,经集成认证服务系统(SSO)验证通过或响应目标客户端的用户会话验证票据ticket;客户端A跳转至客户端B时携带该用户会话验证票据ticket,交由应用或系统服务后端B完成本地会话的验证创建流程。
本发明所述的分布式认证方法步骤为:
1)应用或系统向中台服务应用中心注册应用,发布应用或服务和创建对应客户端,获取应用或服务密钥参数和客户端标识参数;
2)应用或系统服务后端(APP-SERVER)集成SSO客户端SDK包(sso-client)
3)客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起访问请求时,在请求头中携带指定的会话标识;
4)SSO客户端SDK包(sso-client)在请求链路上通过过滤器机制介入请求,从请求头中获取指定的会话标识;
5)若未能从请求头中获取到指定的会话标识,过滤器将向客户端(APP/WEB)响应未获授权访问状态码;
6)客户端(APP/WEB)接收到系统未获授权访问状态码,携带系统信息参数,重定向跳转至集成认证服务系统(SSO)服务页面;
7)用户在集成认证服务系统(SSO)服务页面完成注册或登录操作;
8)集成认证服务系统(SSO)调用中台服务应用中心接口,通过访问系统递交的appKey参数查询注册应用信息,获取应用密钥和登录会话凭证范围配置;
9)集成认证服务系统(SSO)调用中台服务用户中心接口,查询获取用户信息;
10)编码用户信息数据并做MD5摘要,生成一个32位的随机字符作为因子,使用该因子对用户数据摘要做混淆处理,生成一个64位长度的全局TGC令牌;
11)基于用户数据封装授权验证票据数据对象;
12)通过全局TGC令牌缓存用户授权验证票据TGT数据对象并设置有效期;
13)生成1个16位以内长度随机的字符串作为随机因子插入到全局TGC令牌中,按固定位移量对全局TGC令牌做位移混淆,再生成1个16位以内长度随机的字符串作为随机因子对全局TGC令牌做换位混淆,经过混淆处理后生成认证票据ticket;
14)若为特定客户端发起的验证请求,认证票据ticket后拼接携带客户端标识;
15)集成认证服务系统(SSO)携带认证票据ticket重定向回访问系统客户端;
16)客户端(APP/WEB)访问页面接收到认证票据ticket时,向应用或系统服务后端(APP-SERVER)发起登录认证票据ticket的验证请求,由SSO客户端SDK包(sso-client)票据验证过滤器从请求链路上拦截处理该请求;
17)SSO客户端SDK包(sso-client)携带登录认证票据ticket向集成认证服务系统(SSO)发起验证请求;
18)集成认证服务系统(SSO)接收票据ticket,判断票据ticket上是否携带了客户端标识;
19)若认证票据ticket上携带了客户端标识,验证该客户端是否授信;
20)集成认证服务系统(SSO)对认证票据ticket做反向解析,处理获得全局TGC令牌;
21)通过全局TGC令牌获取TGT缓存数据;
22)使用访问系统的密钥、用户TGT数据生成JWT令牌;根据访问系统配置判断是否需要生成刷新令牌;
23)集成认证服务系统(SSO)向访问系统响应JWT令牌和认证范围内的用户数据;
24)应用或系统服务后端(APP-SERVER)接收到集成认证服务系统(SSO)响应后,将会话认证JWT令牌响应给客户端(APP/WEB);
25)客户端(APP/WEB)在请求头中携带会话认证再次请求应用或系统服务后端(APP-SERVER);
26)所述系统内多个应用或系统服务跨系统互信认证的方式,包括:
应用或系统服务后端A(APP-SERVER)通过集成的SSO客户端SDK包(sso-client)能力,携带当前会话凭证、应用或系统服务后端B的应用标识请求集成认证服务系统(SSO);
集成认证服务系统(SSO)接收会话凭证和应用标识;
集成认证服务系统(SSO)解析会话凭证获取用户数据;
集成认证服务系统(SSO)根据应用或系统服务后端B的应用标识查询服务端信息,根据应用或系统服务后端A的应用信息判断系统A和系统B是否可以互信认证;
若可以互信认证,集成认证服务系统(SSO)根据方法[10]-[14]生成应用或系统服务后端B的用户认证票据ticket;
客户端A(APP/WEB)携带系统B的用户认证票据ticket跳转至客户端B(APP/WEB);
客户端B(APP/WEB)接收用户认证票据ticket执行方法[16]-[24]验证获取用户会话凭证;
27)所述会话注销方法,包括:
客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)携带会话凭证发起注销请求;
由SSO客户端SDK包(sso-client)会话注销过滤器从请求链路上拦截处理该请求;
SSO客户端SDK包(sso-client)注销本地会话;
SSO客户端SDK包(sso-client)携带会话凭证向集成认证服务系统(SSO)发起会话注销请求;
集成认证服务系统(SSO)接收会话注销请求,查询访问系统应用信息;
判断是否处理访问系统发起的全局会话注销请求;
无需处理全局会话请求的直接响应;
需要处理全局会话注销的,集成认证服务系统(SSO)注销全局会话;
全局会话注销后判断是否处理关联系统或应用客户端局部会话注销;
向登记的关联系统或应用客户端发起局部会话注销请求;
28)所述第三方系统对接互信认证方法,包括:
第三方系统集成SSO客户端SDK包(sso-client)并设置系统请求路由不拦截;
第三方系统路由跳转至集成认证服务系统(SSO);
用户在集成认证服务系统(SSO)完成注册或登录操作;
集成认证服务系统(SSO)生成用户的认证票据ticket,携带该票据重定向跳转回第三方系统页面;
第三方系统由集成的SSO客户端SDK包(sso-client)验证获取用户授权userId;
29)第三方系统可选认证授权范围,包括仅限userId的静默授权和统一登录拦截的完整认证服务。
本发明的有益效果为,
1、用户会话凭证采用JWT令牌标识是无状态可扩展的,通过SDK包解析处理后通过集成认证服务系统统一验证处理。
2、结合票据验证和JWT令牌机制,传递的票据和认证数据中都不包含用户信息,提高用户信息隐私安全。
3、全局会话和异地本地会话管理的方式,减少子系统反复验证用户会话的性能问题,在授信范围内用户访问可跨系统互通。
4、统一集成的SDK包提供了标准化的验证流程,新系统只需简单的集成开发就能无缝对接进整个系统生态中,增强了系统的可扩展性,同时标准化接口集成的方式极大方便外部第三方系统整合服务。
5、实现标准化统一验证,有效减少用户反复注册登录操作提升用户体验,同时提升开发效率减低运营成本。
下面结合附图和具体实施方式本发明做进一步解释。
附图说明
图1为本发明逻辑关系步骤导图。
具体实施方式
一种基于票据的分布式认证方法,本发明所述的分布式认证方法包括三个相互连接的物理层架构,分别为:
1)应用或系统的客户端(APP/WEB)、
2)应用或系统服务后端(APP-SERVER)、
3)认证服务系统(SSO);
所述的应用或系统服务后端(APP-SERVER)集成SDK包(sso-client认证包);SDK包(sso-client认证包)提供系统认证功能,包括内容如下:拦截校验本地用户会话、验证登录票据换取会话凭证、登出本地会话、本地会话管理;
所述的认证服务系统(SSO)运行具有用户授权认证,提供一种基于票据的单点认证方法,通过封装接口对外提供用户注册机制、用户登录机制、用户会话授信、用户信息更新、应用会话集中管理及本地管理功能;
所有的用户信息由设置的中台服务用户中心服务统一保存和管理;
所有接入集成认证服务系统(SSO)的应用或系统服务后端(APP-SERVER)由设置的中台服务应用中心统一保存和管理;
应用或系统服务后端(APP-SERVER)和客户端(APP/WEB)注册发布时,选择设置用户会话鉴权方式、会话有效期时长、用户数据授权范围信息;
应用或服务开发团队将从中台服务应用中心获取应用参数(appKey/secretKey)和客户端标识(endpoint Code);
集成的SSO客户端SDK包(sso-client认证包)的应用或系统服务后端(APP-SERVER)将共享用户信息作为用户一次注册多端访问的数据基础;
所述的分布式认证方法通过http协议请求获取及交换凭证的方式,使用户访问应用或系统前进行登录认证,在访问其他系统时交换获取新的凭证,实现授信系统间免登访问。
本发明所述的应用或系统服务后端(APP-SERVER)通过集成的SDK包(sso-client)获取用户认证票据ticket时,根据实际的系统或服务使用场景,在系统或服务注册时限定其会话使用范围,结合范围参数scope限定用户数据授权范围,实现系统内授信登录和满足第三方授权登录(OAUTH2.0)机制。
本发明所述的应用或系统服务后端(APP-SERVER)通过SDK包(sso-client)实现用户登录会话凭证的获取、验证。
本发明所述的客户端(APP/WEB)访问时通过从请求头中获取特定的会话认证标识判断用户是否登录、登录状态的有效期。
本发明所述的集成认证服务系统(SSO)生成的会话凭证采用JWT令牌机制,基于Token的鉴权机制是无状态的,该凭证本身是不包含用户信息或者会话信息的,那么系统也就无关用户从哪个客户端或服务获取会话凭证,为系统或应用的扩展提供便利。
本发明所述的集成SSO客户端SDK包(sso-client),其会话认证方法为,任何接入系统需要获取并创建用户会话时,统一路由跳转至集成认证服务系统(SSO)登录,SSO服务页面将携带一个标识用户的认证票据ticket返回到子系统页面;子系统页面获取认证票据ticket后传递给应用或系统服务后端(APP-SERVER),通过集成的SSO客户端SDK包(sso-client)向集成认证服务系统(SSO)验证票据有效性并返回用户信息,应用或系统服务后端(APP-SERVER)向客户端(APP/WEB)返回用户会话标识。
本发明所述的应用或系统服务后端(APP-SERVER),其判断用户会话方法为,客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起访问请求时,应用或系统服务后端(APP-SERVER)集成的SSO客户端SDK包(sso-client)会在请求链路上对请求做出拦截介入,SSO客户端SDK包(sso-client)过滤器从请求头中获取指定的会话标识;若无会话标识则返回用户未登录信息,客户端(APP/WEB)路由跳转至集成认证服务系统(SSO)统一完成登录授权操作;若有会话标识,则获取此会话标识,解析会话标识判断会话标识是否在有效期内;解析会话标识获取用户标识,使用用户标识在本地缓存中获取用户信息,判断是否存在有效的会话状态;当前请求的会话状态和用户信息绑定在当前执行线程和请求链路中。
本发明所述的集成SSO客户端SDK包(sso-client),其会话注销方法为,客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起特定请求路由,由集成的SSO客户端SDK包(sso-client)拦截会话注销请求,先注销本地会话和用户信息,再调取集成认证服务系统(SSO)会话注销接口,集成认证服务系统(SSO)根据应用或系统客户端的会话管理配置,判断是否需要注销全局会话和通知关联授信应用或服务注销本地会话。
本发明所述的集成SSO客户端SDK包(sso-client),其关联应用授信方法为,关联授信应用必须都是中台服务应用中心注册发布应用,由中台服务应用中心维护应用间的授信关系和授信范围;客户端A因业务需要要向客户端B跳转并实现用户免登验证时,由集成认证服务系统(SSO)完成授信应用间会话验证签发;应用或系统服务后端A先通过集成的SSO客户端SDK包(sso-client)能力,传递当前用户的会话认证和目标客户端标识,经集成认证服务系统(SSO)验证通过或响应目标客户端的用户会话验证票据ticket;客户端A跳转至客户端B时携带该用户会话验证票据ticket,交由应用或系统服务后端B完成本地会话的验证创建流程。
本发明所述的分布式认证方法步骤为:
1)应用或系统向中台服务应用中心注册应用,发布应用或服务和创建对应客户端,获取应用或服务密钥参数和客户端标识参数;
2)应用或系统服务后端(APP-SERVER)集成SSO客户端SDK包(sso-client)
3)客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)发起访问请求时,在请求头中携带指定的会话标识;
4)SSO客户端SDK包(sso-client)在请求链路上通过过滤器机制介入请求,从请求头中获取指定的会话标识;
5)若未能从请求头中获取到指定的会话标识,过滤器将向客户端(APP/WEB)响应未获授权访问状态码;
6)客户端(APP/WEB)接收到系统未获授权访问状态码,携带系统信息参数,重定向跳转至集成认证服务系统(SSO)服务页面;
7)用户在集成认证服务系统(SSO)服务页面完成注册或登录操作;
8)集成认证服务系统(SSO)调用中台服务应用中心接口,通过访问系统递交的appKey参数查询注册应用信息,获取应用密钥和登录会话凭证范围配置;
9)集成认证服务系统(SSO)调用中台服务用户中心接口,查询获取用户信息;
10)编码用户信息数据并做MD5摘要,生成一个32位的随机字符作为因子,使用该因子对用户数据摘要做混淆处理,生成一个64位长度的全局TGC令牌;
11)基于用户数据封装授权验证票据数据对象;
12)通过全局TGC令牌缓存用户授权验证票据TGT数据对象并设置有效期;
13)生成1个16位以内长度随机的字符串作为随机因子插入到全局TGC令牌中,按固定位移量对全局TGC令牌做位移混淆,再生成1个16位以内长度随机的字符串作为随机因子对全局TGC令牌做换位混淆,经过混淆处理后生成认证票据ticket;
14)若为特定客户端发起的验证请求,认证票据ticket后拼接携带客户端标识;
15)集成认证服务系统(SSO)携带认证票据ticket重定向回访问系统客户端;
16)客户端(APP/WEB)访问页面接收到认证票据ticket时,向应用或系统服务后端(APP-SERVER)发起登录认证票据ticket的验证请求,由SSO客户端SDK包(sso-client)票据验证过滤器从请求链路上拦截处理该请求;
17)SSO客户端SDK包(sso-client)携带登录认证票据ticket向集成认证服务系统(SSO)发起验证请求;
18)集成认证服务系统(SSO)接收票据ticket,判断票据ticket上是否携带了客户端标识;
19)若认证票据ticket上携带了客户端标识,验证该客户端是否授信;
20)集成认证服务系统(SSO)对认证票据ticket做反向解析,处理获得全局TGC令牌;
21)通过全局TGC令牌获取TGT缓存数据;
22)使用访问系统的密钥、用户TGT数据生成JWT令牌;根据访问系统配置判断是否需要生成刷新令牌;
23)集成认证服务系统(SSO)向访问系统响应JWT令牌和认证范围内的用户数据;
24)应用或系统服务后端(APP-SERVER)接收到集成认证服务系统(SSO)响应后,将会话认证JWT令牌响应给客户端(APP/WEB);
25)客户端(APP/WEB)在请求头中携带会话认证再次请求应用或系统服务后端(APP-SERVER);
26)所述系统内多个应用或系统服务跨系统互信认证的方式,包括:
应用或系统服务后端A(APP-SERVER)通过集成的SSO客户端SDK包(sso-client)能力,携带当前会话凭证、应用或系统服务后端B的应用标识请求集成认证服务系统(SSO);
集成认证服务系统(SSO)接收会话凭证和应用标识;
集成认证服务系统(SSO)解析会话凭证获取用户数据;
集成认证服务系统(SSO)根据应用或系统服务后端B的应用标识查询服务端信息,根据应用或系统服务后端A的应用信息判断系统A和系统B是否可以互信认证;
若可以互信认证,集成认证服务系统(SSO)根据方法[10]-[14]生成应用或系统服务后端B的用户认证票据ticket;
客户端A(APP/WEB)携带系统B的用户认证票据ticket跳转至客户端B(APP/WEB);
客户端B(APP/WEB)接收用户认证票据ticket执行方法[16]-[24]验证获取用户会话凭证;
27)所述会话注销方法,包括:
客户端(APP/WEB)向应用或系统服务后端(APP-SERVER)携带会话凭证发起注销请求;
由SSO客户端SDK包(sso-client)会话注销过滤器从请求链路上拦截处理该请求;
SSO客户端SDK包(sso-client)注销本地会话;
SSO客户端SDK包(sso-client)携带会话凭证向集成认证服务系统(SSO)发起会话注销请求;
集成认证服务系统(SSO)接收会话注销请求,查询访问系统应用信息;
判断是否处理访问系统发起的全局会话注销请求;
无需处理全局会话请求的直接响应;
需要处理全局会话注销的,集成认证服务系统(SSO)注销全局会话;
全局会话注销后判断是否处理关联系统或应用客户端局部会话注销;
向登记的关联系统或应用客户端发起局部会话注销请求;
28)所述第三方系统对接互信认证方法,包括:
第三方系统集成SSO客户端SDK包(sso-client)并设置系统请求路由不拦截;
第三方系统路由跳转至集成认证服务系统(SSO);
用户在集成认证服务系统(SSO)完成注册或登录操作;
集成认证服务系统(SSO)生成用户的认证票据ticket,携带该票据重定向跳转回第三方系统页面;
第三方系统由集成的SSO客户端SDK包(sso-client)验证获取用户授权userId;
29)第三方系统可选认证授权范围,包括仅限userId的静默授权和统一登录拦截的完整认证服务。
以上所述的仅是本发明的部分具体实施例,方案中公知的具体内容或常识在此未作过多描述。应当指出,上述实施例不以任何方式限制本发明,对于本领域的技术人员来说,凡是采用等同替换或等效变换的方式获得的技术方案均落在本发明的保护范围内。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (10)
1.一种基于票据的分布式认证方法,其特征在于,所述的分布式认证方法包括三个相互连接的物理层架构,分别为:
1)应用或系统的客户端、
2)应用或系统服务后端、
3)认证服务系统;
所述的应用或系统服务后端集成SDK包;SDK包提供系统认证功能,包括内容如下:拦截校验本地用户会话、验证登录票据换取会话凭证、登出本地会话、本地会话管理;
所述的认证服务系统运行具有用户授权认证,提供一种基于票据的单点认证方法,通过封装接口对外提供用户注册机制、用户登录机制、用户会话授信、用户信息更新、应用会话集中管理及本地管理功能;
所有的用户信息由设置的中台服务用户中心服务统一保存和管理;
所有接入集成认证服务系统的应用或系统服务后端由设置的中台服务应用中心统一保存和管理;
应用或系统服务后端和客户端注册发布时,选择设置用户会话鉴权方式、会话有效期时长、用户数据授权范围信息;
应用或服务开发团队将从中台服务应用中心获取应用参数和客户端标识;
集成的SSO客户端SDK包的应用或系统服务后端将共享用户信息作为用户一次注册多端访问的数据基础;
所述的分布式认证方法通过http协议请求获取及交换凭证的方式,使用户访问应用或系统前进行登录认证,在访问其他系统时交换获取新的凭证,实现授信系统间免登访问。
2.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的应用或系统服务后端通过集成的SDK包获取用户认证票据ticket时,根据实际的系统或服务使用场景,在系统或服务注册时限定其会话使用范围,结合范围参数scope限定用户数据授权范围,实现系统内授信登录和满足第三方授权登录机制。
3.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的应用或系统服务后端通过SDK包实现用户登录会话凭证的获取、验证。
4.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的客户端访问时通过从请求头中获取特定的会话认证标识判断用户是否登录、登录状态的有效期。
5.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的集成认证服务系统生成的会话凭证采用JWT令牌机制。
6.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的集成SSO客户端SDK包,其会话认证方法为,任何接入系统需要获取并创建用户会话时,统一路由跳转至集成认证服务系统登录,SSO服务页面将携带一个标识用户的认证票据ticket返回到子系统页面;子系统页面获取认证票据ticket后传递给应用或系统服务后端,通过集成的SSO客户端SDK包向集成认证服务系统验证票据有效性并返回用户信息,应用或系统服务后端向客户端返回用户会话标识。
7.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的应用或系统服务后端,其判断用户会话方法为,客户端向应用或系统服务后端发起访问请求时,应用或系统服务后端集成的SSO客户端SDK包会在请求链路上对请求做出拦截介入,SSO客户端SDK包过滤器从请求头中获取指定的会话标识;若无会话标识则返回用户未登录信息,客户端路由跳转至集成认证服务系统统一完成登录授权操作;若有会话标识,则获取此会话标识,解析会话标识判断会话标识是否在有效期内;解析会话标识获取用户标识,使用用户标识在本地缓存中获取用户信息,判断是否存在有效的会话状态;当前请求的会话状态和用户信息绑定在当前执行线程和请求链路中。
8.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的集成SSO客户端SDK包,其会话注销方法为,客户端向应用或系统服务后端发起特定请求路由,由集成的SSO客户端SDK包拦截会话注销请求,先注销本地会话和用户信息,再调取集成认证服务系统会话注销接口,集成认证服务系统根据应用或系统客户端的会话管理配置,判断是否需要注销全局会话和通知关联授信应用或服务注销本地会话。
9.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的集成SSO客户端SDK包,其关联应用授信方法为,关联授信应用必须都是中台服务应用中心注册发布应用,由中台服务应用中心维护应用间的授信关系和授信范围;客户端A因业务需要要向客户端B跳转并实现用户免登验证时,由集成认证服务系统完成授信应用间会话验证签发;应用或系统服务后端A先通过集成的SSO客户端SDK包能力,传递当前用户的会话认证和目标客户端标识,经集成认证服务系统验证通过或响应目标客户端的用户会话验证票据ticket;客户端A跳转至客户端B时携带该用户会话验证票据ticket,交由应用或系统服务后端B完成本地会话的验证创建流程。
10.根据权利要求1所述的基于票据的分布式认证方法,其特征在于,所述的分布式认证方法步骤为:1)应用或系统向中台服务应用中心注册应用,发布应用或服务和创建对应客户端,获取应用或服务密钥参数和客户端标识参数;
2)应用或系统服务后端集成SSO客户端SDK包;
3)客户端向应用或系统服务后端发起访问请求时,在请求头中携带指定的会话标识;
4)SSO客户端SDK包在请求链路上通过过滤器机制介入请求,从请求头中获取指定的会话标识;
5)若未能从请求头中获取到指定的会话标识,过滤器将向客户端响应未获授权访问状态码;
6)客户端接收到系统未获授权访问状态码,携带系统信息参数,重定向跳转至集成认证服务系统服务页面;
7)用户在集成认证服务系统服务页面完成注册或登录操作;
8)集成认证服务系统调用中台服务应用中心接口,通过访问系统递交的appKey参数查询注册应用信息,获取应用密钥和登录会话凭证范围配置;
9)集成认证服务系统调用中台服务用户中心接口,查询获取用户信息;
10)编码用户信息数据并做MD5摘要,生成一个32位的随机字符作为因子,使用该因子对用户数据摘要做混淆处理,生成一个64位长度的全局TGC令牌;
11)基于用户数据封装授权验证票据数据对象;
12)通过全局TGC令牌缓存用户授权验证票据TGT数据对象并设置有效期;
13)生成1个16位以内长度随机的字符串作为随机因子插入到全局TGC令牌中,按固定位移量对全局TGC令牌做位移混淆,再生成1个16位以内长度随机的字符串作为随机因子对全局TGC令牌做换位混淆,经过混淆处理后生成认证票据ticket;
14)若为特定客户端发起的验证请求,认证票据ticket后拼接携带客户端标识;
15)集成认证服务系统携带认证票据ticket重定向回访问系统客户端;
16)客户端访问页面接收到认证票据ticket时,向应用或系统服务后端发起登录认证票据ticket的验证请求,由SSO客户端SDK包票据验证过滤器从请求链路上拦截处理该请求;
17)SSO客户端SDK包携带登录认证票据ticket向集成认证服务系统发起验证请求;
18)集成认证服务系统接收票据ticket,判断票据ticket上是否携带了客户端标识;
19)若认证票据ticket上携带了客户端标识,验证该客户端是否授信;
20)集成认证服务系统对认证票据ticket做反向解析,处理获得全局TGC令牌;
21)通过全局TGC令牌获取TGT缓存数据;
22)使用访问系统的密钥、用户TGT数据生成JWT令牌;根据访问系统配置判断是否需要生成刷新令牌;
23)集成认证服务系统向访问系统响应JWT令牌和认证范围内的用户数据;
24)应用或系统服务后端接收到集成认证服务系统响应后,将会话认证JWT令牌响应给客户端;
25)客户端在请求头中携带会话认证再次请求应用或系统服务后端;
26)所述系统内多个应用或系统服务跨系统互信认证的方式,包括:
应用或系统服务后端A通过集成的SSO客户端SDK包能力,携带当前会话凭证、应用或系统服务后端B的应用标识请求集成认证服务系统;
集成认证服务系统接收会话凭证和应用标识;
集成认证服务系统解析会话凭证获取用户数据;
集成认证服务系统根据应用或系统服务后端B的应用标识查询服务端信息,根据应用或系统服务后端A的应用信息判断系统A和系统B是否可以互信认证;
若可以互信认证,集成认证服务系统根据方法[10]-[14]生成应用或系统服务后端B的用户认证票据ticket;
客户端A携带系统B的用户认证票据ticket跳转至客户端B;
客户端B接收用户认证票据ticket执行方法[16]-[24]验证获取用户会话凭证;
27)所述会话注销方法,包括:
客户端向应用或系统服务后端携带会话凭证发起注销请求;
由SSO客户端SDK包会话注销过滤器从请求链路上拦截处理该请求;
SSO客户端SDK包注销本地会话;
SSO客户端SDK包携带会话凭证向集成认证服务系统发起会话注销请求;
集成认证服务系统接收会话注销请求,查询访问系统应用信息;
判断是否处理访问系统发起的全局会话注销请求;
无需处理全局会话请求的直接响应;
需要处理全局会话注销的,集成认证服务系统注销全局会话;
全局会话注销后判断是否处理关联系统或应用客户端局部会话注销;
向登记的关联系统或应用客户端发起局部会话注销请求;
28)所述第三方系统对接互信认证方法,包括:
第三方系统集成SSO客户端SDK包并设置系统请求路由不拦截;
第三方系统路由跳转至集成认证服务系统;
用户在集成认证服务系统完成注册或登录操作;
集成认证服务系统生成用户的认证票据ticket,携带该票据重定向跳转回第三方系统页面;
第三方系统由集成的SSO客户端SDK包验证获取用户授权userId;
29)第三方系统可选认证授权范围,包括仅限userId的静默授权和统一登录拦截的完整认证服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990892.4A CN113660284B (zh) | 2021-08-26 | 2021-08-26 | 一种基于票据的分布式认证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990892.4A CN113660284B (zh) | 2021-08-26 | 2021-08-26 | 一种基于票据的分布式认证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113660284A true CN113660284A (zh) | 2021-11-16 |
CN113660284B CN113660284B (zh) | 2023-02-21 |
Family
ID=78482182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110990892.4A Active CN113660284B (zh) | 2021-08-26 | 2021-08-26 | 一种基于票据的分布式认证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113660284B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100154046A1 (en) * | 2008-12-17 | 2010-06-17 | Industrial Technology Research Institute | Single sign-on method and system for web browser |
CN104579681A (zh) * | 2014-12-29 | 2015-04-29 | 华中师范大学 | 互信应用系统间身份认证系统 |
CN105592003A (zh) * | 2014-10-22 | 2016-05-18 | 北京拓尔思信息技术股份有限公司 | 一种基于通知的跨域单点登录方法及系统 |
WO2018053122A1 (en) * | 2016-09-14 | 2018-03-22 | Oracle International Corporation | Single sign-on and single logout functionality for a multi-tenant identity and data security management cloud service |
CN109063457A (zh) * | 2018-06-22 | 2018-12-21 | 杭州才云科技有限公司 | 一种跨平台登录统一认证对接方法、存储介质、电子设备 |
CN112468481A (zh) * | 2020-11-23 | 2021-03-09 | 西安西热电站信息技术有限公司 | 一种基于CAS的单页和多页web应用身份集成认证方法 |
CN112688937A (zh) * | 2020-12-22 | 2021-04-20 | 武汉烽火众智数字技术有限责任公司 | 一种跨应用的异构应用下系统单点登录的登录方法 |
-
2021
- 2021-08-26 CN CN202110990892.4A patent/CN113660284B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100154046A1 (en) * | 2008-12-17 | 2010-06-17 | Industrial Technology Research Institute | Single sign-on method and system for web browser |
CN105592003A (zh) * | 2014-10-22 | 2016-05-18 | 北京拓尔思信息技术股份有限公司 | 一种基于通知的跨域单点登录方法及系统 |
CN104579681A (zh) * | 2014-12-29 | 2015-04-29 | 华中师范大学 | 互信应用系统间身份认证系统 |
WO2018053122A1 (en) * | 2016-09-14 | 2018-03-22 | Oracle International Corporation | Single sign-on and single logout functionality for a multi-tenant identity and data security management cloud service |
CN109063457A (zh) * | 2018-06-22 | 2018-12-21 | 杭州才云科技有限公司 | 一种跨平台登录统一认证对接方法、存储介质、电子设备 |
CN112468481A (zh) * | 2020-11-23 | 2021-03-09 | 西安西热电站信息技术有限公司 | 一种基于CAS的单页和多页web应用身份集成认证方法 |
CN112688937A (zh) * | 2020-12-22 | 2021-04-20 | 武汉烽火众智数字技术有限责任公司 | 一种跨应用的异构应用下系统单点登录的登录方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113660284B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11082225B2 (en) | Information processing system and control method therefor | |
CN111783067B (zh) | 多网站间的自动登录方法及装置 | |
KR102362456B1 (ko) | 권한 위양 시스템, 그 제어 방법 및 저장 매체 | |
CN105959267B (zh) | 单点登录技术中的主令牌获取方法、单点登录方法及系统 | |
US9729539B1 (en) | Network access session detection to provide single-sign on (SSO) functionality for a network access control device | |
JP5635133B2 (ja) | セキュアな動的権限委譲 | |
US10541991B2 (en) | Method for OAuth service through blockchain network, and terminal and server using the same | |
KR101459802B1 (ko) | 암호화 증명의 재검증에 기반을 둔 인증 위임 | |
CN101027676B (zh) | 用于可控认证的个人符记和方法 | |
EP3462701B1 (en) | Device, control method of the same, and program | |
US20080072303A1 (en) | Method and system for one time password based authentication and integrated remote access | |
US20140165147A1 (en) | Session Certificates | |
CN106209749A (zh) | 单点登录方法及装置、相关设备和应用的处理方法及装置 | |
KR20170106515A (ko) | 다중 팩터 인증 기관 | |
CN109962892A (zh) | 一种登录应用的认证方法及客户端、服务器 | |
Wu et al. | Design and implementation of cloud API access control based on OAuth | |
JP7043480B2 (ja) | 情報処理システムと、その制御方法とプログラム | |
CN113660284B (zh) | 一种基于票据的分布式认证方法 | |
US11595389B1 (en) | Secure deployment confirmation of IOT devices via bearer tokens with caveats | |
Lazarev et al. | Analysis of applicability of open single sign-on protocols in distributed information-computing environment | |
US10015286B1 (en) | System and method for proxying HTTP single sign on across network domains | |
US11606210B1 (en) | Secure activation, service mode access and usage control of IOT devices using bearer tokens | |
WO2012028168A1 (en) | Identity gateway | |
US20240039910A1 (en) | Authenticating a communication partner on a device | |
CN117097509A (zh) | 一种授权登录方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |