目录
- 1、访问客户端地址不跳转到cas-server认证界面。
- 2、认证成功之后,还是进不去客户端子系统。
- 3、加入Cas配置,但是不生效。
- 4、cas的jar包与项目本身jar包有冲突。
- 5、开启restful接口报错:Method not Found。
- 6、cas-server与cas-client有很多版本选择问题。
- 7、多个客户端之间的密码校验方式不同。
- 8、为什么推荐使用域名,不使用localhost。
- 9、普通登录方式和cas登录方式可以共存吗。
- 10、想让它跳转向8080的认证界面,而不是默认的login.jsp。
- 11、过滤器顺序问题。
- 12、所有的请求都是200,302已经成功,但页面就是不跳转,不重定向。
- 13、前后端分离项目客户端集成的两个前提。
- 14、TGT,TICKET有效期。
- 15、拦截器与过滤器的区别。
- 16、保证前后端的session一致,为什么还是进不去。
- 17、客户端子系统如何获取当前单点登录用户。
- 18、登录之后,权限问题。
1、访问客户端地址不跳转到cas-server认证界面。
cas-client内置认证过滤器,经过这个过滤器就会重定向到cas-server认证界面。但是为什么有的客户端为什么没有重定向呢?
因为没有进入后台,尤其是前后端分离项目。
localhost:8010/abc才是后台项目。
访问localhost:8010进入的是前端项目,不进入cas的过滤器。
2、认证成功之后,还是进不去客户端子系统。
认证成功后,卡在了前端登录界面,就是进不去。
认证成功后的跳转路径是否经过了后端的校验过滤器。
前后端是否使用了同一个session。
前端对登录状态有独立判断。
3、加入Cas配置,但是不生效。
找几个简单的具备登录功能的项目,测试一下是否可以单点登录,判断是否是自己操作有误。
如果没有错误,那就是项目本身问题,比如对项目安全框架不了解。
4、cas的jar包与项目本身jar包有冲突。
放进去jar包,启动失败。
首先考虑是jar包冲突,换不同版本的jar包。
还是不行,就仔细看日志,不放过任何一行。
你所认为不可能的,往往就是真实答案。
比如,我在整合一个客户端时,根据报错信息指示,新建一个文件夹,名称为:simple-jndi
加入Cas的jar包,启动就报错。不加Cas的jar包,一点问题都没有。
新建一个文件夹就好了,空白文件夹,启动后,文件夹也是空白的,毫无作用,但就是解决了jar包问题。
5、开启restful接口报错:Method not Found。
这种错误代表已经开启了restful接口。
报错就代表你成功了,狗血剧情。
6、cas-server与cas-client有很多版本选择问题。
是否会有版本冲突,比如cas-server与cas-client不对应,会造成错误吗。
不会,cas-server独立部署,cas-client也是独立部署。
在他们部署的过程中,把自己装好就可以了,熟悉自己使用的版本,不能随便从网上找一段配置就直接用。
用旧不用新。
cas-server推荐使用4.x版本。
cas-client推荐使用3.2.x版本。
7、多个客户端之间的密码校验方式不同。
Cas单点登录,将用户中心这一套登录逻辑独立出去。
原先的登录逻辑都暂停了,保留不使用。
在cas-server端,一个企业内部,用户系统是统一的,随便选择出一套密码校验作为cas-server的即可。
8、为什么推荐使用域名,不使用localhost。
分布式部署中,使用localhost,每一个服务器都会从本机进行查询。
9、普通登录方式和cas登录方式可以共存吗。
可以,只要你水平够牛,nothing is impossible。
10、想让它跳转向8080的认证界面,而不是默认的login.jsp。
安全框架问题。
在security配置文件里设置,这个接口不会会或者不会跳转即可,security框架控制某些接口不跳转。
11、过滤器顺序问题。
@Order
过滤器的顺序是一定不可以忽略的,比如在web.xml文件中
有Cas的认证过滤器,校验过滤器,有项目的字符编码过滤器。
如果你将字符编码过滤器放在了最下边,就会导致乱码问题出现。
12、所有的请求都是200,302已经成功,但页面就是不跳转,不重定向。
按出来F12,看到请求都正常,但是页面就是不动。
检查登录接口。
检查JS回调函数。
13、前后端分离项目客户端集成的两个前提。
认证成功后,访问客户端必须是经过过滤器的。
前后端同一个session。
这种前提不是固定死的,根据本身项目情况不是必要的。
但是认证成功后,访问客户端必须经过过滤器,这个前提是统一的,必须完成的。
14、TGT,TICKET有效期。
Ticket默认生存时间为10秒。
TGT默认生存时间为2小时。
为了安全着想,可以考虑将Ticket与TGT时间放短。
15、拦截器与过滤器的区别。
cas-client中使用了过滤器与监听器。
过滤器>拦截器。
请求到来时,先经过过滤器,再经过拦截器。
1、拦截器是被Spring容器管理的,过滤器不可以使用IOC中的bean进行业务处理。
2、过滤器只在servlet前后起作用,拦截器深入controller方法前后,异常抛出前后。
16、保证前后端的session一致,为什么还是进不去。
因为前端还有判断。
17、客户端子系统如何获取当前单点登录用户。
session里没有我需要的uid了,怎么办?
你可以使用上下文,也可以使用cas-client提供的接口。
HttpServletRequestWrapperFilter
String user = request.getUserPrincipal().toString();
String name = request.getRemoteUser();
18、登录之后,权限问题。
通过cas-server认证后,权限判断是哪里判断的。
有了uid,知道了是谁,客户端自然可以进行权限判断。