单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。
首先要做的是下载war包,并且把对应的war包放到tomcat中进行启动。(我本地使用windows环境模拟,直接使用tomcat/bin/startup.bat进行启动)。
下载链接:https://download.csdn.net/download/qq_23974323/10935734
可以把war包更名为cas.war直接放到tomcat/webapp下面启动。
启动完成之后在浏览器输入http://localhost:8080/cas/login.即可看到如下界面,看到界面则表示部署成功。
因为这里的CAS服务端是在tomcat启动,所以直接访问的端口需要修改tomcat默认启动端口。这里不做赘述。
修改CAS的端口需要修改WEB-INF/cas.properties
在配置文件中找到server.name一栏修改为:server.name=http://localhost:9100
去除https认证需要改的地方有如下几个:
修改WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml。修改成如下,cookieSecure与https认证相关,改为false为不认证。cookieMaxAge为cookie的生命周期,-1表示无生命周期,这边改为3600。
sd
修改WEB-INF/spring-configuration/warnCookieGenerator.xml,按如下修改,其中的cookieSecure与cookieMaxAge与上一步一致。
这里需要修改服务端中web-inf下的deployerConfigContext.xml添加下面的配置:
同时需要修改的还有:deployerConfigContext.xml文件中的authenticationManager这个bean。需要改ref bean为我们定义的dbAuthHandler
最后要做的是下载4个jar,放到webapps/cas/WEB-INF/lib中。
mchange-commons-java-0.2.15.jar
mysql-connector-java-5.1.32.jar
cas-server-support-jdbc-4.0.0.jar
c3p0-0.9.5.2.jar
demo为maven项目,首先要建两个项目,分别起名为MyCasDemo1跟MyCasDemo2
pom.xml文件如下:
4.0.0
MyCasDemo1
MyCasDemo1
war
0.0.1-SNAPSHOT
MyCasDemo1 Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
org.jasig.cas.client
cas-client-core
3.3.3
javax.servlet
servlet-api
2.5
provided
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.7
1.7
org.apache.tomcat.maven
tomcat7-maven-plugin
9001
/
MyCasDemo1
区别在于对应的端口一个是9001一个是9002。切记!
分别给两个demo添加web.xml
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter
CAS Single Sign Out Filter
/*
CASFilter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
http://localhost:9100/cas/login
serverName
http://localhost:9001
CASFilter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http://localhost:9100/cas
serverName
http://localhost:9001
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Assertion Thread Local Filter
/*
区别在于对应的端口一个是9001一个是9002。切记!
编写一个index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
一品优购
这是第一个测试demo的页面,登陆user为:
<%=request.getRemoteUser()%>
退出登录
这里包含一个退出登陆功能,只要添加logout链接即可,后面的service为退出登陆之后跳转的界面。这里需要另作配置才能实现跳转。
具体配置如下:修改cas-servlet.xml中bean id为logoutAction的,把p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"里的"${cas.logout.followServiceRedirects:true}"由false改为true即可。
如果不需要使用service跳转的在退出登陆那边不加"?service=..."则不需要改相应的配置。
至此,只需要启动CAS服务tomcat以及两个tomcat就可以进行验证。此时的登陆是校验数据库的,所以前提记得从数据库中找好测试用的数据。
7、修改CAS默认登陆界面。
我本地写了一个登陆界面引入js,以及css样式,界面如下:
点击登陆,登陆成功之后:
单击退出登陆会跳转到登陆界面。
完整测试代码的war包/源码zip包下载地址:https://download.csdn.net/download/qq_23974323/10935761
https://download.csdn.net/download/qq_23974323/10935752