记录一次解决shiro+cas的集成问题【重复重定向】

首先简介一下工作中的情况:

公司之前的两个项目,权限和认证是用shir做的。现在需要将这两个项目作为客户端,做单点登陆(sso)。

这个重复重定向的问题真是由于自己不熟悉shiro造成的,网上的解决方案大概我都看过了,都试过了,然而。。。

工作准备:

1.之前没有做过单点登陆,所以用了一天的时间了解了一下单点登陆的各种框架和协议

1.目前文档和教程多的就是cas(我也是用了这种)

2.像腾讯和新浪使用的是oauth(比较新的,文档和使用的人比较少)

3.自己写一个单点登陆(我也看过别人写的简单的,总结来说简单的太简单,复杂的太复杂)

2.注意一下前提:之前没有用过shiro(这点很重要,也是这点导致集成的时候出现重定向的问题)、也没用过sso

3.先给大家看一下web.xml的过滤器(和网上的没啥区别)


        shiroFilter
        org.springframework.web.filter.DelegatingFilterProxy
        
            targetFilterLifecycle
            true
        


    shiroFilter
    /*

4.这是spring-context-shiro.xml(和网上的没啥区别,但是问题就是出现在这里,细节细节细节!!)




	Shiro Configuration

	
	

	
	注意:
		${adminPath}/cas = cas 当时没认真看这里,这就是根据不同的url指定不同的过滤器
		为什么说要注意这里呢?
		因为看到这篇文章的猿猴们应该都之后cas的基本原理了。
		1.当我们第一次访问这个客户端的时候,先去cas认证,并且返回一个ticket
		2.然后关键的一点来了,客户端要有个东西去验证ticket,谁来验证啊???
		3.就是这块指定的过滤器,它就相当于当前客户端的验证服务。我们继续
	
		
			
				/static/** = anon
				/gis/** = anon
				/userfiles/** = anon
				/jsp/** = authc
				${adminPath}/cas = cas
				${adminPath}/login = authc
				${adminPath}/logout = logout
				${adminPath}/** = user
				/act/rest/service/editor/** = perms[act:model:edit]
				/act/rest/service/model/** = perms[act:model:edit]
				/act/rest/service/** = user
				/ReportServer/** = user				
			
		
	

	
	
		
		
		
		
			
				
				
			
		
		
			
		
	

	
	
		
	
	
	
        
        
        
        
        
		第二个关键点来了:
			这块是当前客户端的验证服务所以和上面第一个注意的地方要对应起来。
			${adminPath}/cas正好是cas过滤器匹配的url。这是重中之重!!!!
		
        
    
	
	
		
		
		
	

	
	
		
		 
		
		

		
		
		
		

		
		
		 
	

 	
 	
	
	
		
	

	
	
	
	
	
	
		
		
		
	

	
	
	
		
	

	
	

	
	
		
	
	
		
	


5.这里是xxx.propeties文件的关键配置:

cas.server.url=http://127.0.0.1:8080/cas
cas.project.url=http://127.0.0.1:8081/项目名
adminPath=/a

大家如果将我上面的两个关键位置弄明白了,重定向的问题应该就不会发生了。

总结:

不能急于求成,不了解这个shiro给我造成了很大的阻碍。

不能盲目的看别人的结论,要认清其中的原理。

如果你是第一次使用shiro和cas集成,你可以直接关注一下我标红的文字(xml中有两个重点不能标红,注意看一下)



你可能感兴趣的:(java)