spring+shiro+cas实现单点登录,登出

cas.war下载地址:https://download.csdn.net/download/qq_37160920/10662543

1.下载cas.war,放在tomcat的 webapps下发布.需要根据本地的配置进行一些设置,可以参考:https://blog.csdn.net/zzq900503/article/details/54693267

2.配置好之后,访问:127.0.0.1:8090/cas/login,出现下图说明发布成功.(默认用户名,密码是:casuser /Mellon)

spring+shiro+cas实现单点登录,登出_第1张图片

3.配置客户端单点登录:

在客户端系统的web.xml进行配置:


	
	CASFilter
	org.jasig.cas.client.authentication.AuthenticationFilter
	
	casServerLoginUrl
	http://127.0.0.1:8090/cas/login
	
	
	serverName
	http://127.0.0.1:8080
	
	
	
	CASFilter
	/login.html
	
	
	
	CASValidationFilter
	org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
	
	casServerUrlPrefix
	http://127.0.0.1:8090/cas
	
	
	serverName
	http://127.0.0.1:8080
	
	
	
	CASValidationFilter
	/login.html
	
	

	
	
		CAS HttpServletRequest Wrapper Filter
		
			org.jasig.cas.client.util.HttpServletRequestWrapperFilter
	
	
		CAS HttpServletRequest Wrapper Filter
		/*
	


	
		
			org.springframework.web.context.request.RequestContextListener
		
	

配置完成,在访问客户端系统的时候就会被拦截,跳转到cas单点登录的页面,输入用户名和密码之后会跳转回客户端系统,会带着用户名,然后根据自己系统的处理逻辑进行处理.在客户端获取用户名即说明单点登录的流程已经走通.

例:访问:http://127.0.0.1:8080/amp/login.html 会跳转到:http://127.0.0.1:8090/cas/login?service=http%3A%2F%2F127.0.0.1%3A8080%2Famp%2Flogin.html. 在cas服务端登录成功之后,会在访问http://127.0.0.1:8080/amp/login.html . 

获取用户名的两种方法:(还有其他的获取方式,有兴趣的可以搜索学习一下)

1.  Assertion assertion = (Assertion) request.getSession().getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);
                String userNameStr = null;              
                if (null != assertion) {
                    AttributePrincipal principal = assertion.getPrincipal();
                    userNameStr = principal.getName();
                }

//使用这种方式需要在web.xml中配置HttpServletRequestWrapperFilter过滤器
2.  String username = request.getRemoteUser();

 

4.单点登出的配置:

官网给出的配置:


	
		org.jasig.cas.client.session.SingleSignOutHttpSessionListener
	
	
	
		CASSingLe Sign OutFilter
		org.jasig.cas.client.session.SingleSignOutFilter
		
		
		casServerUrlPrefix
		http://127.0.0.1:8090/cas
		
	
	
		CASSingLe Sign OutFilter
		/*
	
	

因为使用shiro对session进行了管理,所以网络上只配置SingleSignOutFilter拦截器不能实现登出功能.在网络上搜索找到了一种解决办法: https://blog.csdn.net/zhmz1326/article/details/52287649
对 Shiro的Web过滤器和上面说的有一些不同配置, 对/** ; /login.html  ;/index.html都进行了配置.


/login.html=casLogout,anon

/index.html=casLogout,login,remember

/**=casLogout,login,remember,perm,baseUrl

配置完成重启登录之后,新打开一个窗口访问:http://127.0.0.1:8090/cas/logout

spring+shiro+cas实现单点登录,登出_第2张图片

再访问客户端时,就会跳转到单点登录界面.说明登出成功.

 

 

 

 

 

你可能感兴趣的:(CAS登录登出,cas登录,cas登出)