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)
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
再访问客户端时,就会跳转到单点登录界面.说明登出成功.