基于jasig的sso

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
整体的结构就是cas+shiro实现单点登录和权限管理。怎么安装就不说了网上一大堆,在这总结一些问题的处理方法
1、未能识别出目标票根
org.jasig.cas.client.validation.TicketValidationException: 
未能够识别目标'ST-2-jEo1qANhs9HgZ7VKC5Hf-cas'票根

原因:是由于客户端应用web.xml配置中的casServerLoginUrl和casServerUrlPrefix两个URL属性的域名与证书中定义的不一致,或者你的地址配置的不对,配置serverUrl就到cas配置serviceUrl就到端口号

2、循环重定向
解决方案为查看service与loginUrl中的是否一致,这是两个概念,service是请求的页面,当用户访问这个页面是会跳转至公共的验证平台,而loginUrl中的service是回调的地址,如果两个地址设定为同一地址的话就会出现循环重定向的问题

3、自定义验证报异常
cas登录端修改cas-server-surport-jdbc包中的class要保证与原cas所用包的环境一致,替换class后运行tomcat会包creating bean exception这是缺少mysql的jar包导入就可以了

4、配置客户端返回更多信息,具体的配置过程网上很多这里只提报错。
误区:<constructor-arg index="1" value="select * from user where username=?"/> 这是正确的配置方法
<constructor-arg index="1" value="select * from user where {0}"/> 这是错误的配置方法

5、去掉cas地址栏的sessionid
top.jsp session=false 例<%@ page session="false" %>  去掉Url中的sessionid

6、shiro的集成
shiro加入主要有什么意义呢?我总结了以下几点:a、大局上的权限控制,shiro提供从角色到权限的系统化校验,而且shiro的加密也是较比传统更安全啊。b、shiro可以过滤url。我们很多情况下需要cas放过某些url并不是/*式的拦截,如何能细颗粒的控制这些url,显然通过cas的filter映射拦截是不能尽如人意的,所以我们引入shiro,可以指定需要过滤的url为anon,需要保护的就指定为authc。还可以基于角色过滤等等。c、shiro提供很成熟的session机制,可以配合cas的票据完美保存cas的会话。d、如果用户非常态登录,不通过正常的login登录那么回跳到应用的时候就会有一些问题,我们集成了shiro之后就可以拿到重定向前的请求放在shirosaverequest里,这样就可以解决回跳重定向的问题了

7、cas的集群
cas集群我这里用到的是tomcat,只需要配置tomcat的session共享就可以了

未尽 待完善

猜你喜欢

转载自201207142613.iteye.com/blog/2111945
sso
今日推荐