乐趣区

关于单点登录:CAS单点登录浅析二应用实例

连续上篇,本篇着重形容 cas 利用实例及相干源码解析

CAS 源码解析 -CAS 登陆罕用的类

依据 login-webflow.xml 能够找到 cas-server-core 中找到对应的文件目录。能够依据须要进行更改源码。如:cas 须要提供多种登陆形式(证书登陆、验证码校验、短信登陆等)cas 登陆提交的时候进入 AuthenticationViaFormAction。能够对登陆的形式进行条件判断。
CAS 源码解析 - 数据拜访校验一

cas 登陆的时候须要拜访数据库,查问用户、明码是否正确。能够通过 WEB-INF/deployerConfigContext.xml 文件配置数据库连贯以及拜访对应的 java 类进行更改源码,进行简单登陆校验。如:登陆的时候用户明码有效期校验、用户登陆次数过多、用户不存在等。
CAS 源码解析 - 数据拜访校验二

数据拜访时:能够对明码、登陆次数、有效期、用户权限进行校验。对于校验过程中须要依据不同的状况揭示到前端页面。所以能够依据状况自定义异样,通过异样来返回到前端页面,进行揭示。
CAS 源码解析 - 指定默认拜访地址

cas 登陆拜访利用的时候接口地址都是:http://casip:casport/cas/login/?service= 指标地址。cas 登陆胜利后进入到指标地址。然而有些用户要求无论用户拜访任何一个地址,都必须依据用户权限,默认拜访固定的一个地址。这时能够通过更改该类的办法。
能够在该类中设置用户默认登陆的地址。org.jasig.cas.authentication.principal.SimpleWebApplicationServiceImpl

cas 单点登录利用场景:

springMVC 服务实现 CAS 单点登陆


VUE +springBoot 集成 CAS

依照如下更改 springboot 配置文件:

依照如下更改 VUE 前端配置文件:路由配置更改:


nginx 代理登陆集成 CAS

1、第四步:当用户登陆胜利后须要拜访 cas server,因为 cas server 是过个节点通过 nginx 代理,所以 cas 拜访的时候能够设置主备或者设置 cas server 集成 redis 实现服务 ticket redisSession 共享方可登陆,nginx 能够配置为 ip-hash 或者轮询形式。(cas 未设置 ticket 集群共享不能够设置 ip-hash)
2、第六步:在第五步 cas 登陆胜利后会随机拜访 cas -client。当 cas-client 登陆认证通过后,会向 cas-server 发送 ticket 校验。可能依据如下不同场景进行配置。如:
1)nginx 对外开放的服务与对内的服务不在同一个网段,cas client 无法访问外网。
解决办法:1、cas 主备配置,拜访 cas-server 备用服务。2、cas 集成 ticket redis
2)cas 未集群设置了 ip-hash,因为 cas server1 登陆了,然而 cas server2 未登陆导致服务登陆认证失败。
解决办法:cas 应用 nginx 办法、1 应用主备、2、cas 集群 redis。
CAS 集成 redis

更改 WEB-INF\spring-configuration\ticketRegistry.xml 文件:


WEB 利用集成 redis Session-springmvc
spring mvc 状况下配置文件如下:

应用场景:1、前后端拆散状况经常应用。2、存储大量用户数据状况下应用、3、springmvc 状况下集成配置。4、前后端拆散状况下应用 redis 配置。
WEB 利用集成 redis Session- 前后端拆散

登陆胜利后,将 Session 信息存到 redis 中或者应用 springboot redis Session 自带的扫描办法实现。对于一个 vue 页面多个微服务状况下,须要应用。否则登陆的时候 vue 页面会有限循环拜访首页。
cas 提供免登陆接口
利用集成 cas 实现免登陆的形式有两种:
1、在 cas 服务上提供免登陆接口。
1)通过 web.xml 配置一个新的接口地址。
2)获取接口参数加密密文,解密后获取用户名、明码、
3)通过加载 login-webflow.xml, 实现免登陆。
长处:cas 革新后,应用 cas 单点登录的服务都不须要革新。
2、在零碎服务上提供登陆地址。
1)零碎提供一个免登陆地址。
2)cas 拦截器对该接口进行凋谢。
毛病:只能实现以后利用的免登陆,如果多个利用同时应用了 cas、须要对多个利用进行更改。
cas 单点退出

如果是多个 cas-client 服务,须要调用所有 cas-client 服务 Session 退出接口。而后拜访 caslogout 接口地址。

总结:
cas 单点登陆常见的问题:
1、cas 默认登陆地址。
2、ticket 登陆生效常见问题。
场景:nginx 代理生产环境。
nginx 主备搭建。
cas 集成 redis 状况。
登陆超时。
账号配置谬误。
前后端拆散状况拦截器导致登陆失败。

退出移动版