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/mykeystoremykeystore.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
更多内容请关注微信:
来源:CSDN
作者:redstarofsleep
链接:https://blog.csdn.net/redstarofsleep/article/details/51135105