看了很多关于sso-cas的源代码调试过程,但是自己做的时候,发现都不全面,自己决定做一个全面的调试过程。但由于自己对maven项目不熟悉,所以自己新建的web project,一点一点复制核心代码和jar包。
软件:
可以去http://www.jasig.org/cas/download上下载cas的最新server端和client端
我用的软件是cas-server-3.5.2和cas-client-3.2.1,myeclipse10.0和tomcate7.0, jdk1.7.0_09
一、配置cas_server端
1.解压后本地可看到
2.打开myeclipse--------------->新建web project------------>命名为cas_server
3.将cas-server-3.5.2\cas-server-core\src\main\java下面的org拖入项目中的scr文件夹,
之后将cas-server-3.5.2\cas-server-webapp\src\main\java\org\jasig\cas\web下的FlowExecutionExceptionResolver.java复制到src目录下的org.jasig.cas.web的包名下,
之后将cas-server-3.5.2\cas-server-webapp\src\main\java\org\jasig\cas\web\flow下的所有文件复制到src目录下的org.jasig.cas.web.flow的包名下,
将cas-server-3.5.2\cas-server-webapp\src\main\webapp\WEB-INF\classes下面的所有文件夹拖入项目中的src文件夹,可得到如下:
报错没有关系,是有些格式不支持,不影响运行。
4.然后找到cas-server-3.5.2\modules下面的cas-server-webapp-3.5.2.war用解压工具解压, 打开压缩包,将其下所有的东西,复制到webroot下,
到此,服务器端的部署完成,将其发布到tomcate,启动,输入网址启动后浏览器地址栏输入https://localhost:8443/cas_server/login,出现
只要输入相同的用户名和密码就可以登陆成功,进入登陆成功界面。
server配置成功!
二、客户端的配置较简单:
1.新建web project,命名为cas_client1.
2.把cas-client-3.2.1\modules下的cas-client-core-3.2.1.jar和commons-logging-1.1.jar复制到web-INF下的lib下,同时有一个jar包需要自己下载casclient.jar,下载后也复制到lib下。
3.对web.xml做如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://dyy:8443/cas_server/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://dyy:8443/cas_server/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:18080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
红色部分cas_server是你的服务器的项目名称。
红色部分18080是我更改的tomcat的端口,端口的更改需要三个,可以自己百度查询更改过程,这里我改为18080.
此时,客户端的配置就成功了。
三。。类似的我新建了一个cas_client2项目工程,与client1的配置相同,除了端口改为28080.
到此源程序配置成功。
下面要将三个项目发布在不同的tomcat下,服务器我配置在tomcat7.x下,之后我复制了我的tomcat(我的tomcat是免安装版)重命名tomcat-app1和tomcat-app2(注意更改端口分别为18080和28080)分别将其配置在myeclipse的tomcat6.x和tomcat5.x之下,但运行时会报错,
1. 若Tomacat 启动报错如下:
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
解决方法为:在Tomacat7的context.xml文件里的<Context>中加上<Loader delegate="true" />
2. 我对我的myeclipse的tomcat6.x和5.x做以下更改,
修改启动项:
window--Preferences--tomat--tomat6.x--Paths--append to classpath
将tomcat7/bin下的tomcat-juli.jar添加classpath中。
同样tomcat 5.x加入这个jar包,
之后启动正常。
这样在myeclipse中就配置了三台服务器,端口分别为8080,18080,28080,对应项目为cas_server,cas_client1,cas_client2,全部启动,
访问:http://localhost:18080/cas_client1/时就会跳转到服务器登陆页面,登陆成功后,会出现cas_client1项目的index.jsp页面的内容,再访问http://localhost:28080/cas_client2/时无需登录,便可以访问。