cas单点登录1-源码导入eclipse
谈到单点登录(SSO:Single Sign On),最出名的框架,莫过于CAS(Central Authentication Service)
官方网站:https://www.apereo.org/projects/cas
源码地址:https://github.com/Jasig/cas和https://github.com/Jasig/java-cas-client
帮助文档:https://wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1
服务端:本系列文章全部基于目前最新的CAS-4.2.7
客户端:目前CAS的Java客户端官方最新版本是3.4.1
注意:自从3.1.11
开始,maven2的groupId已经变为org.jasig.cas.clien
,如下所示
-
<dependency>
-
<groupId>org.jasig.cas.client</groupId>
-
<artifactId>cas-client-core</artifactId>
-
<version>3.4.1</version>
-
</dependency>
部署Tomcat
这里使用的环境为:jdk-7u80-windows-x64
、apache-tomcat-8.0.21
、cas-client-core-3.4.0
、cas-server-webapp-4.0.3
首先,我们去下载CAS源码,手工构建cas.war,操作步骤如下
1、https://github.com/Jasig/cas/releases中下载4.2.7版得到cas-4.2.7zip,并解压到桌面
2、执行命令:C:\Users\Jadyer\Desktop\cas-4.2.7>mvn install -DskipTests
在构建最后,会报告下面的错误
Could not transfer artifact net.jradius:jradius-core:pom:1.0.0 from/to coova (http://coova-dev.s3.amazonaws.com/mvn): Software caused connection abort: recv failed
不过没关系,此时我们想要的war已经生成了,它就是\cas-4.2.7\cas-server-webapp\target\cas.war
除了上面手工构建的方式,还可以直接下载现成的war包,地址如下(下面两个地址都可以)
http://central.maven.org/maven2/org/jasig/cas/cas-server-webapp/4.2.7
http://mvnrepository.com/artifact/org.jasig.cas/cas-server-webapp/4.2.7
下载到的文件为cas-server-webapp-4.2.7.war
,它的内容与上面手工构建得到的cas.war
是相同的
接下来,将cas.war部署到Tomcat,启动后访问http://127.0.0.1:8080/cas/
关于登录密码,CAS-4.0
之前的默认验证规则是:只要用户名和密码相同就认证通过
4.0之后有所改变:其默认用户名密码为casuser/Mellon
,它配置在\WEB-INF\deployerConfigContext.xml
导入Eclipse
1.Eclipse中新建一个WebProject,比方说cas(新建时JavaEE版本选5.0就行)
2、解压之前得到的cas.war,将其内容拷贝到新建的WebProject中即可(classes目录中的properties文件和log4j.xml拷到src即可)
验证一下:把这个WebProject发布到Tomcat,看到的应该是一样的效果
注意:导入时,这两个jar也是CAS的:person-directory-api-1.5.1.jar
、person-directory-impl-1.5.1.jar
另外:cas.war中的\WEB-INF\classes\
里面并没有class文件,实际上它是在\WEB-INF\lib\cas-server-*.jar四个jar
里面的
如果也想导入它们的源码,可通过以下方式找到(如果你需要的话)
- cas-server-security-filter-2.0.3.jar
源码地址为https://github.com/Jasig/cas-server-security-filter(实际上只有一个java文件)
这里也可以查到源码http://mvnrepository.com/artifact/org.jasig.cas/cas-server-security-filter/2.0.3
- cas-server-core-4.0.3.jar、cas-server-support-generic-4.0.3.jar、cas-server-webapp-support-4.0.3.jar
这三个jar的源码就在cas-4.0.3.zip
里面,直接拷过来就行了
二、源码全部导入方法:
下载好源码包后并且在eclipse里面安装好gradle插件后,以gradle的形式导入,安装方法不做介绍,导入过程及结果如下:
如果需要导入源码文件,下载或者导入慢时, 请查看一下链接来解决问题 http://blog.csdn.net/bitree1/article/details/54950192
启用HTTP协议支持
我们都知道,Tomcat默认是没有开启HTTPS协议的
这个时候访问http://127.0.0.1:8080/cas/会在页面看到下面的提示
-
Non-secure Connection
-
You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.
这段提示是硬编码在\WEB-INF\view\jsp\default\ui\casLoginView.jsp
中的
我们可以注释掉它,也可以让CAS支持HTTP协议,即令其不开启HTTPS验证,这时需要修改三个文件
-
1、\WEB-INF\deployerConfigContext.xml
-
<bean class="org.jasig...support.HttpBasedServiceCredentialsAuthenticationHandler">添加p:requireSecure="false"
-
-
2、\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml
-
p:cookieSecure="true"改为p:cookieSecure="false"
-
-
3、\WEB-INF\spring-configuration\warnCookieGenerator.xml
-
p:cookieSecure="true"改为p:cookieSecure="false"