需要用到的jar http://download.csdn.net/source/2990726
下载后解压,有一个cas-server-webapp-3.3.war(如果是下载的官方版本 就解压缩cas-server-3.3-release.zip 在modules中有这个war ) 这个就是cas提供的一个完成了的服务器端项目
首先我们可以把这个项目扔到tomcat目录下的webapps下 最好改名成cas 方便
启动tomcat 打开浏览器 http://localhost:8080/cas-server-webapp-3.3 如果出现登录界面
可以试一试 默认的验证方法是用户名=密码 如果登录成功 那么第一步就OK了
因为cas是基于ssl的 关于ssl的原理可以看一下尚学堂的cas视频 讲的很详细 http://bbs.langsin.com/thread-13314-1-3.html
所以我们需要让tomcat支持ssl
也很简单 找到tomcat目录下的conf/server.xml
在其中加入
<Connector protocol="org.apache.coyote.http11.Http11Protocol" port="8443" minSpareThreads="5" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="C:/Documents and Settings/Administrator/.keystore" keystorePass="changeit" truststoreFile="C:/java/jdk/jre/lib/security/cacerts" clientAuth="false" sslProtocol="TLS"/>
其中有三处加了颜色的需要根据自己的配置情况更改一下
首先红色的部分是一个密钥的路径 这个密钥如何产生呢? 在jdk1.3之前貌似需要下载专门的工具 但是在jdk1.3之后这个功能已经被sun整合了进来 所以用起来比较方便
进入cmd 推荐进入到 你的jdk目录下的/jre/lib/security路径下 比如我的就是 cd C:/java/jdk/jre/lib/security
不过貌似在当前用户路径下产生keystore也是可以的
下一步 keytool -genkey -keyalg RSA -alias mykey -dname "cn=www.yt.com" -storepass changeit
mykey 是一个别名 可以随便起
www.yt.com 是你的域名 如果本机测试的话就可以localhost
这个域名也可以更改 可以到C:/WINDOWS/system32/drivers/etc 路径下 找到hosts
用记事本打开 在最后一行加入 127.0.0.1 www.yt.com 保存 退出
这样的话重启tomcat 输入 www.yt.com:8080 应该也能看到tomcat的index页面
changeit 是密码 最好不要改变 我试了改变这个密码 但是到后面tomcat总是报错
在cmd下输入命令之后会让你输入mykey 的主密码 直接按回车就是于上面keystore的密码一样 也就是changeit
OK 下一步
cmd中 输入 keytool -export -alias mykey -file mykey.crt -storepass changeit
输入完之后 在你的jdk/jre/lib/security 路径下应该会产生一个 mykey.crt 文件
OK 再下一步
keytool -import -alias mykey -file mykey.crt -keystore cacerts -storepass changeit
如果成功的话 在C:/Documents and Settings/当前用户/路径下应该会产生一个.keystore文件
比如我的话就是C:/Documents and Settings/Administrator下
如果上面三部都完成的话就可以在server.xml中加入上面那段了 3种颜色的根据自己的情况改
改完了的话可以测试一下
重启tomcat 在浏览器中输入https://localhost:8443/ 如果出现tomcat的index页面就OK了
接下来就可以简单实现一下单点登录了
简单起见 我们可以在tomcat下建2个web项目 名字无所谓了
分别在两个项目中随便写2个index.jsp 在lib中加入casclient-2.1.1.jar
最主要的是两个项目的web.xml加入
<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://www.yt.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://www.yt.com:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>www.yt.com:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
www.yt.com 是你的域名 如果前面没改hosts的话就是localhost 8433端口 cas是cas服务器项目的名字 开始没改的话就是
cas-server-webapp-3.3
edu.yale.its.tp.cas.client.filter.loginUrl 是单点登录 登录的地址url
edu.yale.its.tp.cas.client.filter.validateUrl 是验证登录的url
这些暂时不要改
把这两个项目导出war 扔到tomcat的webapps下 重启tomcat 访问其中一个项目 正常的话是可以直接跳转到 cas项目的登录页面的 另一个项目也是如此 如果在cas默认的登录页面中 输入用户名=密码的话 就可以 跳转到你访问项目的页面中
如果你访问第一个项目后登录成功的话 再去访问第二个项目的话是不用再登录的 以上单点登录的基本功能完成
下面就是根据自己的情况去配置cas了
首先是登录的验证 cas提供了很多验证的机制
最常用的就是用户名和密码的验证模式 由于cas 是支持spring的
所以我们首先需要在cas的服务器端配置一个dataSource
在cas项目web-inf下的deployerConfigContext.xml中加入
熟习spring的可以根据自己的情况改一下 另外要把自己所用数据库的jar包扔到lib中
这不完成后还是在deployerConfigContext.xml中找到
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
这是cas默认的验证器 也就是用户名=密码的形式验证 把这个bean注释掉
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select user_pass from tb_user where user_name = ?" />
</bean>
红色的部分是一个sql 也就是到你的用户表中去查询密码 查出来的密码跟用户在页面输入的密码进行比较
如果相等则通过验证 这个要根据自己的表结构去改吧
ok了的话 就可以登录试试 输入用户名=密码的方法已经不给力了
最后就是登录的页面样式了 cas默认是提供了一套登录页面
可以在cas项目下的web-inf/view/default中找到casLoginView.jsp 这个就是登录页面
看一下这个页面 包涵了includes/bottom.jsp 和top.jsp
而且这个页面是用了国际化的 我们可以在classes下的messages_zh_CN.properties
找到中文的页面信息 如果不喜欢这个页面的话可以到classes下的default_views.properties中去改
casLoginView.url 是页面url等等都可以改
如果打开casLoginView.jsp 的话我们发现基本没有什么html代码 大部分都是用的jstl 还有spring的标签库
要改的话还是要好好研究研究 如果换成另一个页面的话在验证的时候是会报错的
另外关于cas的基本使用可以参见尚学堂的视频和
http://www.cnblogs.com/arix04/archive/2009/08/06/1540103.html