tomcat下用cas实现sso单点登录

需要用到的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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值