CAS是Central Authentiction Service 的缩写,地方认证服务,一种独立凋谢指令协定.CAS是Yale大学发动的开源我的项目.旨在为Web利用零碎提供一种牢靠的单点登录办法,CAS在2004年12月正式称为JA-SIG的一个我的项目.
特点:
1.开源的企业级单点登录解决方案.
2.CAS Service为须要独立部署的Web利用.
3.CAS Client 反对十分多的客户端(这里指单点登录零碎中的各个Web利用),包含Java .NET PHP等
首次登录验证,其原理如下图所示:
1、第一次跳转:客户端拜访利用零碎,利用零碎判断Session发现为定路,返回302跳转到sso登录页面,并传递service参数给sso,该service参数有两个作用:
2、service个别传递利用零碎url地址,用于sso认证通过后回跳到利用零碎;
3、service参数同时会被cas服务端的作为cas客户端的惟一标记记录下来,用于前期匹配相应的认证凭据;
4、第二次跳转:浏览器显示登录页面,用户输出账号密码登录胜利后,sso会返回302跳转回到原来申请的利用零碎页面,并携带ticket参数,作为认证票据,同时通过Set-Cookie向浏览器记录TGT,(TGT的作用将在下一个利用零碎须要登录的时候体现进去,是防止反复登录的要害)
5、一次后盾验证:利用零碎接管到带有ticket的申请后,向从后盾间接向sso服务器发动一个http申请,将service和ticket作为参数,用于验证ticket的有效性;如果ticket无效,sso服务器将返回该ticket对应的登录用户名。
已实现登录验证切换到其余零碎时,其原理如下图所示:
1、当用户曾经登录过一个利用零碎当前,在同一个浏览器上拜访第二个利用零碎,依据单点登录的要求此时不应该再登录,而是间接进入第二个零碎。然而实际上还是须要通过两次前端跳转、一次后端验证,只不过此时的两次跳转是间断的,两头不会再呈现登陆页面,用户感触不到。判断的根据就是后面第4步通过Set-Cookie保留到客户端的TGT(Ticket Granted Cookie )。
2、相比首次拜访,少了之前的第3步(不须要再呈现登录页面),因为此时在第二步跳转时,携带了之前保留的TGT,cas服务端通过TGT能够得悉用户信息,因而间接生成ticket返回给利用零碎。所以此时是两次间断的302跳转,用户看到的成果就是间接进入第二个利用零碎了。
CAS源码解析-cas相干的jar包
CAS源码-cas配置文件
1、spring-configuration是spring相干的外围配置,蕴含读取配置文件办法、springbean注册配置、ticket票据配置、Cookie配置等。
2、view 页面目录:蕴含jsp、js、css等。
3、cas.properties文件:cas服务的配置文件,能够寄存数据库配置、redis配置等。
4、deployerConfigContext.xml:用于连贯数据库的配置。
1、零碎接管到申请首先通过web.xml,通过web.xml中SafeDispatcherServlet进行映射找到cas-servlet.xml.2、cas-servlet.xml中次要蕴含了两种管制层映射形式。handlerMappingC和FlowHandlerMaping。依据两种不同的映射形式找到对应的服务。
3、以退出登陆为例/logout,通过springbean关系能够找到退出的登陆页面。退出胜利后进入/login登陆页面。
4、/login 采纳了FlowHandlerMaping形式,通过login-webflow.xml文件能够看到cas登陆的整个过程。on-start(start-state)流程开始,end-state流程完结 decision-state判断,相似于if,view-state对应jsp页面 action-state对应执行程序的某段。