jwt单点登录原理,第1张

​刚才突然想明白了单点登录的token为什么不需要针对每个用户都存一个session。

服务器这边准备一个密码字符串,各服务器保持字符串一样。

当用户登录一台服务器成功后,服务器将他的账号和密码字符串通过算法整合一下,形成一个新的字符串。通常这个算法会将密码字符串用哈希的方式来处理(即在新的字符串中不知道这个密码是多少),但账号可以直接在新的字符串中拿到。

这样,服务器将这个新的字符串给用户(即保存在cookie中,或保存在storage中)。用户每次访问,都会带上这个字符串(类似jsessionid)。

服务器这边拿到用户带来的字符串,从中取出账号,将账号和服务器这边存的密码用相同算法整合,形成新的字符串,用这个字符串和用户带来的字符串比对,看是否相同,相同,即通过,不同,让用户去登录。

一般情况下,当用户登录一个站点后,如果长时间没有任何动作,当用户再次单击时,会被强制登出并跳转到登录页面,提醒用户重新登录。

现在我已经为站点整合了CAS,并且已经实现了单点登录以及单点注销,那么当用户使用过程中,发生了超时的情况,估计也是自动强行登出了吧,而且其他部署了CAS的站点也跟着自动登出。

上面的是猜想,那么实际情况到底是什么样的?

CAS-Client客户端超时时间其实就是项目session的有效时间,默认:30分钟,(springboot2x)可修改配置:

验证方法:

a 事前准备:

b 验证动作:

2分钟后,我优先单击webApp1的网页,仿佛没有发生任何与超时相关的处理,依然可以正常访问所有页面。并没有强制跳转到登录页。我再单击webApp2的网页,也可以正常浏览。

又过了2分钟,我优先单击webApp2的网页,可以正常访问。再此单击webApp1,也可以正常访问。

c 验证结果:

cas服务器超时主要指的是TGT(ticket granting ticket)超时,如果TGT时间到期,则需要进行重新登录。默认是2小时。这里单位是秒

验证方法:

a 事前准备:

b 验证动作:

3分钟后,CAS-Server应该已经超时了,这时我访问webApp1,可以正常访问。访问webApp2,也可以正常访问。

6分钟后,CAS-server与webApp1应该都超时了,这时访问webApp1,页面被强制重定向到登录页面了。再访问webApp2,发现仍然可以正常访问。

11分钟后,webApp2页超时了,这时访问webApp2,页面就被重定向到登录页面了。

c 验证结果:

3一个客户端超时并不会影响其他客户端的正常访问。

从上面两个验证可以发现,一旦客户端通过CAS-Server认证后,客户端就相当于完全独立了,即使再访问客户端的页面,客户端与CAS-Server之间也不会再发生任何交互或者验证动作。

一直到客户端强制退出或者超时后,才会主动发起认证请求,CAS-Server才会被动处理请求,判断是需要重定向还是重新认证通过。

也就是说,如果服务器超时时间设置的过短,并不会起作用,还是要等客户端超时才行。

鉴于以上结论,客户端和服务器的超时时间设置应该为:

CAS-Server(TGT)超时时间 >= CAS-Client的超时时间

从之前的验证来看,一个站点超时,并不影响其他站点的正常访问。

CAS-Server和CAS-Client超时结果图:

sso单点登录原理是当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改。

单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。

使用单点登录系统时,用户只需要登录一次,就可以访问多个系统,不需要记忆多个口令密码。单点登录使用户可以快速访问网络,从而提高工作效率,同时也能帮助提高系统的安全性。

扩展资料

要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

另外:

1、单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中,事实上,只要统一认证系统,统一ticket的产生和校验,无论用户信息存储在什么地方,都能实现单点登录。

2、统一的认证系统并不是说只有单个的认证服务器

当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统2的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。

如果我们的网站需要和另一个域名做统一认证,也就是在我们网站登录,但真正的功能却在另一个网站来提供。许多都以 passport 的方式。 整个认证可以分三步完成 第一步:本地验证

这个很简单,输入本地的用户名和密码,然后服务器认证通过,并返回正确的Cookie;

第二步:做远程认证,并返回远程连接

通过本地Cookie,确认用户合法性,然后服务器端调用远程的登录程序,返回一个远程认证号的URL,这个URL里面包含了一个唯一的认证码,使用Location的方式

第三步:远程登录

客户端使用前一步的URL,访问远程的服务器,服务器确认认证码的正确性,再返回正确的远程Cookie

至此,本地认证,通过一个URL,实现了远程认证。

  1 系统概述

  国内领先的支持C-S和B-S架构的单点登录实现机制UTrust SSO(Single sign-on)系统是针对国内企事业信息化发展现状而开发的应用系统管理软件。面对用户的重复登陆,系统管理员繁琐的账号管理工作和系统设置工作,以及如何控制用户的访问权限等问题,UTrust SSO提供了一个完善的解决方案,在异构的IT系统中实现应用系统单点登录,简化用户的登录过程,同时提供集中和便捷的身份管理、安全的认证机制、权限管理和审计,以满足企业对信息系统使用的方便性和安全管理的需求。

  2 系统功能和特点

  UTrust SSO单点登录系统提供灵活模块化的解决方案,用户可以将后台应用系统(B/S结构的WEB应用系统和C/S结构的应用系统)和UTrust SSO单点登录系统无缝整合在一起,无须修改原有应用系统,系统主要功能和特点如下:

  即插即用方式实现单点登录

  对于 B/S结构应用系统,用户只需通过浏览器界面登录一次,即可通过UTrust SSO单点登录系统访问后台的多个用户权限内的Web应用系统,无需逐一输入用户名、密码登录。对于 C/S结构应用系统,通过IE控件来实现对C/S系统客户端的单点登录,用户输入一次用户名、密码,即可访问所有被授权的C/S系统资源。无论对于B/S和C/S结构的应用系统,实现单点登录的功能时,后台应用系统无需任何修改。•后置代理方式实现单点登录 对于有改造条件的B/S结构应用系统,UTrustSSO也提供了后置代理的方式实现单点登录。SSO 系统提供各种API,Agent代理,对原有应用系统进行改造,改变原有应用系统的认证方式,同时采用认证服务器提供的技术进行一次性身份认证,实现单点登录。

  后置代理方式实现单点登录

  对于有改造条件的B/S结构应用系统,UTrustSSO也提供了后置代理的方式实现单点登录。SSO 系统提供各种API,Agent代理,对原有应用系统进行改造,改变原有应用系统的认证方式,同时采用认证服务器提供的技术进行一次性身份认证,实现单点登录。

  与AD域结合单点登录

  UTrust SSO可以与Windows域进行整合,直接引用AD域中的用户身份信息,不需另行单独维护自己的用户信息。当用户登录AD域后,用户无需再登录,就可访问其所有有权限访问的系统,无需再次输入用户名和密码。

  统一用户身份管理

  UTrust SSO 利用账号同步管理模块,将用户的身份信息和密码同步到各个系统的数据库中,系统管理员在一个平台上统一管理用户在各个系统中的账号和密码。在人员离职、岗位变动时,只需在UTrust SSO管理中心一处更改,即可限制其访问权限,消除对后台系统非法访问的威胁。方便了用户管理,也防止过期的用户身份信息未及时删除给企业资产带来的安全风险。

  统一身份认证

  UTrust SSO采用轻量目录存取服务LDAP来建构统一用户信息数据库。LDAP作为一个公开和开放的目录服务标准,已成为未来身份认证和身份管理的标准,具有很好的互操作性和兼容性,可以为企业搭建一个统一身份认证和管理框架,UTrust SSO系统提供开发接口给新建系统,可为后续新的应用系统开发提供了统一的身份认证平台和标准。

  多种身份认证方式

  UTrust SSO支持多种身份认证方式,如数字证书,USB Key,动态口令身份认证,同时也保留了传统的静态口令认证,并且为其他认证方式如短信,生物特征等认证方式预留接口,以适应企业对认证方式扩展的需求。

  日志和审计报告

  UTrust SSO单点登录系统依靠记录最终用户和管理人员的访问过程,建立一套全面的、有效的回溯和追查机制。同时系统管理员可以实时监测用户对企业各应用系统的访问状态,及时发现非法访问事件,对出现的问题进行事后追溯和责任追究提供实证。通过对系统运行状态实时监控审计,还增强了系统的可维护性。主要完成访问行为审计、审计信息查询、审计信息防窜改和黑名单功能等几大功能。

  系统集中管理

  UTrust安全管理中心为UTrust单点登录系统提供管理功能,实现对用户身份信息,权限,应用系统,审计信息的集中管理。UTrust安全管理中心基于Web界面,系统管理员通过这个管理中心可对用户,资源,权限及审计信息进行统一的管理,并对UTrust系统本身进行维护管理。同时系统支持分级授权管理功能,支持总部授权下属单位管理自身的用户,并对其授权,减少总部管理员的负担。

  即插即用和灵活部署

  UTrust SSO单点登录系统进行安装或方案实施时,只需经过简单的系统配置,即可使用。对于分布式网络结构和异构系统,可以在不同网络区域的应用服务器上分布式的部署UTrust SSO单点登录系统,并进行系统集群管理,通过集群功能,提高数据通讯时的负载均衡和并发处理能力,得到安全可靠和高效的单点登录服务。此外,还可以通过双机备份功能,提高整个系统的安全性。

  3 系统环境

  客户端支持的操作系统:

  Windows98/NT/2000/XP

  服务器端支持的操作系统:

  Windows NT/2000、Unix(HP-UX、Solaris、AIX)、Linux、FreeBSD

  数据库:

  Oracle、SQL Server或My SQL等关系型数据库

  目录服务器:

  标准的LDAP目录服务器

本案涉及三个概念及功能模块,即门户、单点登录和统一身份认证。

单点登录(Single Sign-On,缩写为SSO),它是目前业务整合时使用较多的一种解决方案,通过SSO,用户只需要在某个应用系统入口登录一次,就可以访问所有与该应用系统相互信任的其它应用系统。

目前成熟的SSO实现框架有很多,开源的有JOSSO、CAS等很多,你可以选择其中之一与门户集成即可,集成方法的问题可在选型后在网络中查找,可选方案请参考《Liferay 集成 CAS 实现单点登录与应用系统集成》 http://wwwibmcom/developerworks/cn/opensource/os-cn-liferay-cas/indexhtml

所谓身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。复杂一些的身份认证方式采用一些较复杂的加密算法与协议,需要用户出示更多的信息(如私钥)来证明自己的身份,如Kerberos身份认证系统。

目前基于SOA架构,可跨平台与多种类型的应用系统对接的统一身份认证平台也有很多,

身份存储方式有:通用关系型数据库、LDAP目录、Microsoft Active Directory(AD)等形式,可选方案可参考《Web Service Case Study: 统一身份认证服务》

https://wwwibmcom/developerworks/cn/webservices/ws-casestudy/part4/

或《Liferay与CAS及LDAP》http://wwwhuqiwencom/2013/12/18/liferay-cas-ldap/

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » jwt单点登录原理

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情