cas单点登录搭建

旧巷老猫 提交于 2019-12-04 10:21:56

CAS是一个开源的单点登录解决方案。github地址:http://jasig.github.io/cas

具体什么是单点登录,以及其基本原理,这里先不写了,下次再具体写。

今天只记录一下cas的基本搭建过程。

首先从它的网站上下载cas-server。

最新的4.2.x的是通过gradle构建的,如果不会用grad了就找稍微老一点的版本,以前的版本是可以用maven构建的。如果maven也不会用,或者懒得自己编译,可以找3.5.x及以前的版本,有直接编译好的。

自己编译的话也不是一定要把所有的都编译出来,只要前面几个基本的server-core和server-webapp就可以了。cas-server-webapp编译出来是一个war包,把它扔到tomcat里面就可以了。

然后是客户端,客户端不用自己去下源码编译了,已经都发布在maven仓库里了。

在自己的web工程的pom里加入cas客户端:

<dependency>  
      <groupId>org.jasig.cas.client</groupId>  
      <artifactId>cas-client-core</artifactId>  
      <version>3.4.1</version>  
</dependency>

然后在web.xml里加上过滤器:

<!-- 该过滤器负责用户的认证工作 -->  
    <filter>  
        <filter-name>CASFilter</filter-name>  
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
        <init-param>  
            <param-name>casServerLoginUrl</param-name>  
            <param-value>http://192.168.56.101:8080/cas/login</param-value>  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://192.168.56.1:8080</param-value>
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CASFilter</filter-name>  
        <url-pattern>/do/*</url-pattern>  
    </filter-mapping>  
  
    <!-- 该过滤器负责对Ticket的校验工作 -->  
    <filter>  
        <filter-name>CAS Validation Filter</filter-name>  
        <filter-class>  
            org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
        <init-param>  
            <param-name>casServerUrlPrefix</param-name>  
            <param-value>http://192.168.56.101:8080/cas</param-value>  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://192.168.56.1:8080</param-value>
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Validation Filter</filter-name>  
        <url-pattern>/do/*</url-pattern>  
    </filter-mapping>

注意一下,我这个配置里面两个ip,192.168.56.101是cas-server的ip,而192.168.56.1是cas-client自己的ip。另外过滤器的url-pattern按照自己的需要配,全部要过滤就/*,或者只过滤.do啊什么的。我这个过滤的是url中以do开头的。


配到这里把server的tomcat和client都启动,然后访问client的一个地址,会跳转到cas-server的登录页面进行登录,默认的用户名和密码是admin/admin。登录成功后会跳转回client的页面。


然后CAS应该是用https来访问的,接下来就是配https。

https的配置参照我之前的一篇文章就可以:http://blog.csdn.net/redstarofsleep/article/details/45091999

这里有2个注意点,1.配的是cas-server所在的tomcat的https,2.在生成keystore的时候要输入一个姓名,这个姓名最后要配成域名。

cas-server的https配好后,要将证书导入到client所在的jvm上,分两步

第一步,先将证书导出:

keytool -export -file d:/keys/mykeystore.crt -alias tomcat -keystore d:/keys/mykeystore
mykeystore.crt是导出的证书。导出的时候如果要输入密码就输之前在配tomcat的https的时候生成keystore时的密码。

第二步,将证书导入客户端jvm

keytool -import -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -keypass 123456 -alias tomcat -file E:\mykeystore.crt
这里又有两个注意点:

1. jre注意一下,jdk装好后是有两跟jre的,要看下用的是哪个jre,一个是上面这跟命令里的,在jdk下面,另一个是和jdk平级目录的。在eclipse里调试和直接起tomcat用的可能就是两个不同的jre。保险一点就两个jre都导入一下。

2. 这里有两个密码,一个是storepass这个是jvm证书仓库的密码,默认就是changeit,一定要注意啊。另一个是keypass,这个才是和上面一样的生成keystore时的密码。


然后是配域名,用以管理员身份,用记事本打开C:\Windows\System32\drivers\etc\host文件,在最下面加上ip和域名,域名就是刚刚上面说的生成keystore时的名字:

192.168.56.1 casclient.com
192.168.56.101 casserver.com

最后,再记得修改client的web.xml把里面的地址改成域名的。


转载请注明出处: http://blog.csdn.net/redstarofsleep


更多内容请关注微信:


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!